<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <!-- base href="https://g.alicdn.com/serverless/ide-fc-embed/0.0.12/" -->
    <meta charset="UTF-8">
    <style>
        .path {
            stroke-dasharray: 2100;
            stroke-dashoffset: 2100;
            animation: dash 2s linear alternate infinite;
        }

        @keyframes dash {
            from {
                stroke-dashoffset: 2100;
            }

            to {
                stroke-dashoffset: 0;
            }
        }

        .theia-preload {
            background-image: none !important;
            border: 1px solid var(--theia-border-color2);
        }

        .loading-container {
            width: 450px;
            position: absolute;
            top: calc(50% - 100px);
            left: calc(50% - 225px);
            text-align: center;
        }

        #fc-embeded-loading-message {
            color: var(--theia-ui-font-color2);
            font-size: 1em;
            line-height: 1em;
        }
    </style>
    <script>/*! 2021-05-13 17:41:53 v8.15.6 */
    !function (e) {
        function i(n) {
            if (o[n]) return o[n].exports;
            var r = o[n] = {exports: {}, id: n, loaded: !1};
            return e[n].call(r.exports, r, r.exports, i), r.loaded = !0, r.exports
        }

        var o = {};
        return i.m = e, i.c = o, i.p = "", i(0)
    }([function (e, i) {
        "use strict";
        var o = window, n = document;
        !function () {
            var e = 2, r = "ali_analytics";
            if (o[r] && o[r].ua && e <= o[r].ua.version) return void (i.info = o[r].ua);
            var t, a, d, s, c, u, h, l, m, b, f, v, p, w, g, x, z, O = o.navigator, k = O.appVersion,
                T = O && O.userAgent || "", y = function (e) {
                    var i = 0;
                    return parseFloat(e.replace(/\./g, function () {
                        return 0 === i++ ? "." : ""
                    }))
                }, _ = function (e, i) {
                    var o, n;
                    i[o = "trident"] = .1, (n = e.match(/Trident\/([\d.]*)/)) && n[1] && (i[o] = y(n[1])), i.core = o
                }, N = function (e) {
                    var i, o;
                    return (i = e.match(/MSIE ([^;]*)|Trident.*; rv(?:\s|:)?([0-9.]+)/)) && (o = i[1] || i[2]) ? y(o) : 0
                }, P = function (e) {
                    return e || "other"
                }, M = function (e) {
                    function i() {
                        for (var i = [["Windows NT 5.1", "winXP"], ["Windows NT 6.1", "win7"], ["Windows NT 6.0", "winVista"], ["Windows NT 6.2", "win8"], ["Windows NT 10.0", "win10"], ["iPad", "ios"], ["iPhone;", "ios"], ["iPod", "ios"], ["Macintosh", "mac"], ["Android", "android"], ["Ubuntu", "ubuntu"], ["Linux", "linux"], ["Windows NT 5.2", "win2003"], ["Windows NT 5.0", "win2000"], ["Windows", "winOther"], ["rhino", "rhino"]], o = 0, n = i.length; o < n; ++o) if (e.indexOf(i[o][0]) !== -1) return i[o][1];
                        return "other"
                    }

                    function r(e, i, n, r) {
                        var t, a = o.navigator.mimeTypes;
                        try {
                            for (t in a) if (a.hasOwnProperty(t) && a[t][e] == i) {
                                if (void 0 !== n && r.test(a[t][n])) return !0;
                                if (void 0 === n) return !0
                            }
                            return !1
                        } catch (e) {
                            return !1
                        }
                    }

                    var t, a, d, s, c, u, h, l = "", m = l, b = l, f = [6, 9], v = "{{version}}",
                        p = "<!--[if IE " + v + "]><s></s><![endif]-->", w = n && n.createElement("div"), g = [], x = {
                            webkit: void 0,
                            edge: void 0,
                            trident: void 0,
                            gecko: void 0,
                            presto: void 0,
                            chrome: void 0,
                            safari: void 0,
                            firefox: void 0,
                            ie: void 0,
                            ieMode: void 0,
                            opera: void 0,
                            mobile: void 0,
                            core: void 0,
                            shell: void 0,
                            phantomjs: void 0,
                            os: void 0,
                            ipad: void 0,
                            iphone: void 0,
                            ipod: void 0,
                            ios: void 0,
                            android: void 0,
                            nodejs: void 0,
                            extraName: void 0,
                            extraVersion: void 0
                        };
                    if (w && w.getElementsByTagName && (w.innerHTML = p.replace(v, ""), g = w.getElementsByTagName("s")), g.length > 0) {
                        for (_(e, x), s = f[0], c = f[1]; s <= c; s++) if (w.innerHTML = p.replace(v, s), g.length > 0) {
                            x[b = "ie"] = s;
                            break
                        }
                        !x.ie && (d = N(e)) && (x[b = "ie"] = d)
                    } else ((a = e.match(/AppleWebKit\/*\s*([\d.]*)/i)) || (a = e.match(/Safari\/([\d.]*)/))) && a[1] ? (x[m = "webkit"] = y(a[1]), (a = e.match(/OPR\/(\d+\.\d+)/)) && a[1] ? x[b = "opera"] = y(a[1]) : (a = e.match(/Chrome\/([\d.]*)/)) && a[1] ? x[b = "chrome"] = y(a[1]) : (a = e.match(/\/([\d.]*) Safari/)) && a[1] ? x[b = "safari"] = y(a[1]) : x.safari = x.webkit, (a = e.match(/Edge\/([\d.]*)/)) && a[1] && (m = b = "edge", x[m] = y(a[1])), / Mobile\//.test(e) && e.match(/iPad|iPod|iPhone/) ? (x.mobile = "apple", a = e.match(/OS ([^\s]*)/), a && a[1] && (x.ios = y(a[1].replace("_", "."))), t = "ios", a = e.match(/iPad|iPod|iPhone/), a && a[0] && (x[a[0].toLowerCase()] = x.ios)) : / Android/i.test(e) ? (/Mobile/.test(e) && (t = x.mobile = "android"), a = e.match(/Android ([^\s]*);/), a && a[1] && (x.android = y(a[1]))) : (a = e.match(/NokiaN[^\/]*|Android \d\.\d|webOS\/\d\.\d/)) && (x.mobile = a[0].toLowerCase()), (a = e.match(/PhantomJS\/([^\s]*)/)) && a[1] && (x.phantomjs = y(a[1]))) : (a = e.match(/Presto\/([\d.]*)/)) && a[1] ? (x[m = "presto"] = y(a[1]), (a = e.match(/Opera\/([\d.]*)/)) && a[1] && (x[b = "opera"] = y(a[1]), (a = e.match(/Opera\/.* Version\/([\d.]*)/)) && a[1] && (x[b] = y(a[1])), (a = e.match(/Opera Mini[^;]*/)) && a ? x.mobile = a[0].toLowerCase() : (a = e.match(/Opera Mobi[^;]*/)) && a && (x.mobile = a[0]))) : (d = N(e)) ? (x[b = "ie"] = d, _(e, x)) : (a = e.match(/Gecko/)) && (x[m = "gecko"] = .1, (a = e.match(/rv:([\d.]*)/)) && a[1] && (x[m] = y(a[1]), /Mobile|Tablet/.test(e) && (x.mobile = "firefox")), (a = e.match(/Firefox\/([\d.]*)/)) && a[1] && (x[b = "firefox"] = y(a[1])));
                    t || (t = i());
                    var z, O, T;
                    if (!r("type", "application/vnd.chromium.remoting-viewer")) {
                        z = "scoped" in n.createElement("style"), T = "v8Locale" in o;
                        try {
                            O = o.external || void 0
                        } catch (e) {
                        }
                        if (a = e.match(/360SE/)) u = "360"; else if ((a = e.match(/SE\s([\d.]*)/)) || O && "SEVersion" in O) u = "sougou", h = y(a[1]) || .1; else if ((a = e.match(/Maxthon(?:\/)+([\d.]*)/)) && O) {
                            u = "maxthon";
                            try {
                                h = y(O.max_version || a[1])
                            } catch (e) {
                                h = .1
                            }
                        } else z && T ? u = "360se" : z || T || !/Gecko\)\s+Chrome/.test(k) || x.opera || x.edge || (u = "360ee")
                    }
                    (a = e.match(/TencentTraveler\s([\d.]*)|QQBrowser\/([\d.]*)/)) ? (u = "tt", h = y(a[2]) || .1) : (a = e.match(/LBBROWSER/)) || O && "LiebaoGetVersion" in O ? u = "liebao" : (a = e.match(/TheWorld/)) ? (u = "theworld", h = 3) : (a = e.match(/TaoBrowser\/([\d.]*)/)) ? (u = "taobao", h = y(a[1]) || .1) : (a = e.match(/UCBrowser\/([\d.]*)/)) && (u = "uc", h = y(a[1]) || .1), x.os = t, x.core = x.core || m, x.shell = b, x.ieMode = x.ie && n.documentMode || x.ie, x.extraName = u, x.extraVersion = h;
                    var P = o.screen.width, M = o.screen.height;
                    return x.resolution = P + "x" + M, x
                }, S = function (e) {
                    function i(e) {
                        return Object.prototype.toString.call(e)
                    }

                    function o(e, o, n) {
                        if ("[object Function]" == i(o) && (o = o(n)), !o) return null;
                        var r = {name: e, version: ""}, t = i(o);
                        if (o === !0) return r;
                        if ("[object String]" === t) {
                            if (n.indexOf(o) !== -1) return r
                        } else if (o.exec) {
                            var a = o.exec(n);
                            if (a) return a.length >= 2 && a[1] ? r.version = a[1].replace(/_/g, ".") : r.version = "", r
                        }
                    }

                    var n = {name: "other", version: ""};
                    e = (e || "").toLowerCase();
                    for (var r = [["nokia", function (e) {
                        return e.indexOf("nokia ") !== -1 ? /\bnokia ([0-9]+)?/ : /\bnokia([a-z0-9]+)?/
                    }], ["samsung", function (e) {
                        return e.indexOf("samsung") !== -1 ? /\bsamsung(?:[ \-](?:sgh|gt|sm))?-([a-z0-9]+)/ : /\b(?:sgh|sch|gt|sm)-([a-z0-9]+)/
                    }], ["wp", function (e) {
                        return e.indexOf("windows phone ") !== -1 || e.indexOf("xblwp") !== -1 || e.indexOf("zunewp") !== -1 || e.indexOf("windows ce") !== -1
                    }], ["pc", "windows"], ["ipad", "ipad"], ["ipod", "ipod"], ["iphone", /\biphone\b|\biph(\d)/], ["mac", "macintosh"], ["mi", /\bmi[ \-]?([a-z0-9 ]+(?= build|\)))/], ["hongmi", /\bhm[ \-]?([a-z0-9]+)/], ["aliyun", /\baliyunos\b(?:[\-](\d+))?/], ["meizu", function (e) {
                        return e.indexOf("meizu") >= 0 ? /\bmeizu[\/ ]([a-z0-9]+)\b/ : /\bm([0-9x]{1,3})\b/
                    }], ["nexus", /\bnexus ([0-9s.]+)/], ["huawei", function (e) {
                        var i = /\bmediapad (.+?)(?= build\/huaweimediapad\b)/;
                        return e.indexOf("huawei-huawei") !== -1 ? /\bhuawei\-huawei\-([a-z0-9\-]+)/ : i.test(e) ? i : /\bhuawei[ _\-]?([a-z0-9]+)/
                    }], ["lenovo", function (e) {
                        return e.indexOf("lenovo-lenovo") !== -1 ? /\blenovo\-lenovo[ \-]([a-z0-9]+)/ : /\blenovo[ \-]?([a-z0-9]+)/
                    }], ["zte", function (e) {
                        return /\bzte\-[tu]/.test(e) ? /\bzte-[tu][ _\-]?([a-su-z0-9\+]+)/ : /\bzte[ _\-]?([a-su-z0-9\+]+)/
                    }], ["vivo", /\bvivo(?: ([a-z0-9]+))?/], ["htc", function (e) {
                        return /\bhtc[a-z0-9 _\-]+(?= build\b)/.test(e) ? /\bhtc[ _\-]?([a-z0-9 ]+(?= build))/ : /\bhtc[ _\-]?([a-z0-9 ]+)/
                    }], ["oppo", /\boppo[_]([a-z0-9]+)/], ["konka", /\bkonka[_\-]([a-z0-9]+)/], ["sonyericsson", /\bmt([a-z0-9]+)/], ["coolpad", /\bcoolpad[_ ]?([a-z0-9]+)/], ["lg", /\blg[\-]([a-z0-9]+)/], ["android", /\bandroid\b|\badr\b/], ["blackberry", function (e) {
                        return e.indexOf("blackberry") >= 0 ? /\bblackberry\s?(\d+)/ : "bb10"
                    }]], t = 0; t < r.length; t++) {
                        var a = r[t][0], d = r[t][1], s = o(a, d, e);
                        if (s) {
                            n = s;
                            break
                        }
                    }
                    return n
                }, E = 1;
            try {
                t = M(T), a = S(T), d = t.os, s = t.shell, c = t.core, u = t.resolution, h = t.extraName, l = t.extraVersion, m = a.name, b = a.version, v = d ? d + (t[d] ? t[d] : "") : "", p = s ? s + parseInt(t[s]) : "", w = c, g = u, x = h ? h + (l ? parseInt(l) : "") : "", z = m + b
            } catch (e) {
            }
            f = {
                p: E,
                o: P(v),
                b: P(p),
                w: P(w),
                s: g,
                mx: x,
                ism: z
            }, o[r] || (o[r] = {}), o[r].ua || (o[r].ua = {}), o.goldlog || (o.goldlog = {}), i.info = o[r].ua = goldlog._aplus_client = {
                version: e,
                ua_info: f
            }
        }()
    }]);/*! 2017-10-31 20:15:15 v0.2.4 */
    !function (t) {
        function e(o) {
            if (n[o]) return n[o].exports;
            var i = n[o] = {exports: {}, id: o, loaded: !1};
            return t[o].call(i.exports, i, i.exports, e), i.loaded = !0, i.exports
        }

        var n = {};
        return e.m = t, e.c = n, e.p = "", e(0)
    }([function (t, e, n) {
        "use strict";
        !function () {
            var t = window.goldlog || (window.goldlog = {});
            t._aplus_cplugin_utilkit || (t._aplus_cplugin_utilkit = {status: "init"}, n(1).init(t), t._aplus_cplugin_utilkit.status = "complete")
        }()
    }, function (t, e, n) {
        "use strict";
        var o = n(2), i = n(4);
        e.init = function (t) {
            t.setCookie = o.setCookie, t.getCookie = o.getCookie, t.on = i.on
        }
    }, function (t, e, n) {
        "use strict";
        var o = document, i = n(3), a = function (t) {
            var e = new RegExp("(?:^|;)\\s*" + t + "=([^;]+)"), n = o.cookie.match(e);
            return n ? n[1] : ""
        };
        e.getCookie = a;
        var r = function (t, e, n) {
            n || (n = {});
            var i = new Date;
            return n.expires && ("number" == typeof n.expires || n.expires.toUTCString) ? ("number" == typeof n.expires ? i.setTime(i.getTime() + 24 * n.expires * 60 * 60 * 1e3) : i = n.expires, e += "; expires=" + i.toUTCString()) : "session" !== n.expires && (i.setTime(i.getTime() + 63072e7), e += "; expires=" + i.toUTCString()), e += "; path=" + (n.path ? n.path : "/"), e += "; domain=" + n.domain, o.cookie = t + "=" + e, a(t)
        };
        e.setCookie = function (t, e, n) {
            try {
                if (n || (n = {}), n.domain) r(t, e, n); else for (var o = i.getDomains(), a = 0; a < o.length;) n.domain = o[a], r(t, e, n) ? a = o.length : a++
            } catch (t) {
            }
        }
    }, function (t, e) {
        "use strict";
        e.getDomains = function () {
            var t = [];
            try {
                for (var e = location.hostname, n = e.split("."), o = 2; o <= n.length;) t.push(n.slice(n.length - o).join(".")), o++
            } catch (t) {
            }
            return t
        }
    }, function (t, e) {
        "use strict";
        var n = window, o = document, i = !!o.attachEvent, a = "attachEvent", r = "addEventListener", c = i ? a : r,
            u = function (t, e) {
                var n = goldlog._$ || {}, o = n.meta_info || {}, i = o.aplus_ctap || {};
                if (i && "function" == typeof i.on) i.on(t, e); else {
                    var a = "ontouchend" in document.createElement("div"), r = a ? "touchstart" : "mousedown";
                    s(t, r, e)
                }
            }, s = function (t, e, o) {
                return "tap" === e ? void u(t, o) : void t[c]((i ? "on" : "") + e, function (t) {
                    t = t || n.event;
                    var e = t.target || t.srcElement;
                    "function" == typeof o && o(t, e)
                }, !1)
            };
        e.on = s;
        var d = function (t) {
            try {
                o.documentElement.doScroll("left")
            } catch (e) {
                return void setTimeout(function () {
                    d(t)
                }, 1)
            }
            t()
        }, l = function (t) {
            var e = 0, n = function () {
                0 === e && t(), e++
            };
            "complete" === o.readyState && n();
            var i;
            if (o.addEventListener) i = function () {
                o.removeEventListener("DOMContentLoaded", i, !1), n()
            }, o.addEventListener("DOMContentLoaded", i, !1), window.addEventListener("load", n, !1); else if (o.attachEvent) {
                i = function () {
                    "complete" === o.readyState && (o.detachEvent("onreadystatechange", i), n())
                }, o.attachEvent("onreadystatechange", i), window.attachEvent("onload", n);
                var a = !1;
                try {
                    a = null === window.frameElement
                } catch (t) {
                }
                o.documentElement.doScroll && a && d(n)
            }
        };
        e.DOMReady = function (t) {
            l(t)
        }, e.onload = function (t) {
            "complete" === o.readyState ? t() : s(n, "load", t)
        }
    }]);
    !function (o) {
        function t(r) {
            if (e[r]) return e[r].exports;
            var a = e[r] = {exports: {}, id: r, loaded: !1};
            return o[r].call(a.exports, a, a.exports, t), a.loaded = !0, a.exports
        }

        var e = {};
        return t.m = o, t.c = e, t.p = "", t(0)
    }([function (o, t, e) {
        "use strict";
        !function () {
            var o = window.goldlog || (window.goldlog = {});
            o._aplus_cplugin_m || (o._aplus_cplugin_m = e(1).run())
        }()
    }, function (o, t, e) {
        "use strict";
        var r = e(2), a = e(3), n = e(4), s = navigator.sendBeacon ? "post" : "get";
        e(5).run(), t.run = function () {
            return {
                status: "complete", do_tracker_jserror: function (o) {
                    try {
                        var t = new n({
                                logkey: o ? o.logkey : "",
                                ratio: o && "number" == typeof o.ratio && o.ratio > 0 ? o.ratio : r.jsErrorRecordRatio
                            }),
                            e = ["Message: " + o.message, "Error object: " + o.error, "Url: " + location.href].join(" - "),
                            c = goldlog.spm_ab || [], i = location.hostname + location.pathname;
                        t.run({
                            code: 110,
                            page: i,
                            msg: "record_jserror_by" + s + "_" + o.message,
                            spm_a: c[0],
                            spm_b: c[1],
                            c1: e,
                            c2: o.filename,
                            c3: location.protocol + "//" + i,
                            c4: goldlog.pvid || "",
                            c5: o.logid || ""
                        })
                    } catch (o) {
                        a.logger({msg: o})
                    }
                }, do_tracker_lostpv: function (o) {
                    var t = !1;
                    try {
                        if (o && o.page) {
                            var e = o.spm_ab ? o.spm_ab.split(".") : [], c = "record_lostpv_by" + s + "_" + o.msg,
                                i = new n({ratio: o.ratio || r.lostPvRecordRatio});
                            i.run({
                                code: 102,
                                page: o.page,
                                msg: c,
                                spm_a: e[0],
                                spm_b: e[1],
                                c1: o.duration,
                                c2: o.page_url
                            }), t = !0
                        }
                    } catch (o) {
                        a.logger({msg: o})
                    }
                    return t
                }, do_tracker_obsolete_inter: function (o) {
                    var t = !1;
                    try {
                        if (o && o.page) {
                            var e = o.spm_ab ? o.spm_ab.split(".") : [],
                                c = "record_obsolete interface be called by" + s,
                                i = new n({ratio: o.ratio || r.obsoleteInterRecordRatio});
                            i.run({
                                code: 109,
                                page: o.page,
                                msg: c,
                                spm_a: e[0],
                                spm_b: e[1],
                                c1: o.interface_name,
                                c2: o.interface_params
                            }, 1), t = !0
                        }
                    } catch (o) {
                        a.logger({msg: o})
                    }
                    return t
                }, do_tracker_browser_support: function (o) {
                    var t = !1;
                    try {
                        if (o && o.page) {
                            var e = o.spm_ab ? o.spm_ab.split(".") : [],
                                c = new n({ratio: o.ratio || r.browserSupportRatio}), i = goldlog._aplus_client || {},
                                l = i.ua_info || {};
                            c.run({
                                code: 111,
                                page: o.page,
                                msg: o.msg + "_by" + s,
                                spm_a: e[0],
                                spm_b: e[1],
                                c1: [l.o, l.b, l.w].join("_"),
                                c2: o.etag || "",
                                c3: o.cna || ""
                            }), t = !0
                        }
                    } catch (o) {
                        a.logger({msg: o})
                    }
                    return t
                }, do_tracker_common_analysis: function (o) {
                    var t = !1;
                    try {
                        if (o && o.page) {
                            var e = o.spm_ab ? o.spm_ab.split(".") : [],
                                c = new n({ratio: o.ratio || r.browserSupportRatio}), i = goldlog._aplus_client || {},
                                l = i.ua_info || {};
                            c.run({
                                code: 113,
                                page: o.page,
                                msg: o.msg + "_by" + s,
                                spm_a: e[0],
                                spm_b: e[1],
                                c1: [l.o, l.b, l.w].join("_"),
                                c2: o.init_time || "",
                                c3: o.wspv_time || 0,
                                c4: o.load_time || 0,
                                c5: o.channel_type
                            }), t = !0
                        }
                    } catch (o) {
                        a.logger({msg: o})
                    }
                    return t
                }
            }
        }
    }, function (o, t) {
        "use strict";
        t.lostPvRecordRatio = "0.01", t.obsoleteInterRecordRatio = "0.001", t.jsErrorRecordRatio = "0.001", t.browserSupportRatio = "0.001", t.goldlogQueueRatio = "0.01"
    }, function (o, t) {
        "use strict";
        var e = function (o) {
            var t = o.level || "warn";
            window.console && window.console[t] && window.console[t](o.msg)
        };
        t.logger = e, t.assign = function (o, t) {
            if ("function" != typeof Object.assign) {
                var e = function (o) {
                    if (null === o) throw new TypeError("Cannot convert undefined or null to object");
                    for (var t = Object(o), e = 1; e < arguments.length; e++) {
                        var r = arguments[e];
                        if (null !== r) for (var a in r) Object.prototype.hasOwnProperty.call(r, a) && (t[a] = r[a])
                    }
                    return t
                };
                return e(o, t)
            }
            return Object.assign({}, o, t)
        }, t.makeCacheNum = function () {
            return Math.floor(268435456 * Math.random()).toString(16)
        }, t.obj2param = function (o) {
            var t, e, r = [];
            for (t in o) o.hasOwnProperty(t) && (e = "" + o[t], r.push(t + "=" + encodeURIComponent(e)));
            return r.join("&")
        }
    }, function (o, t, e) {
        var r = e(3), a = {ratio: 1, logkey: "fsp.1.1", gmkey: "", chksum: "H46747615"}, n = function (o) {
            o && "object" == typeof o || (o = a), this.opts = o, this.opts.ratio = o.ratio || a.ratio, this.opts.logkey = o.logkey || a.logkey, this.opts.gmkey = o.gmkey || a.gmkey, this.opts.chksum = o.chksum || a.chksum
        }, s = n.prototype;
        s.getRandom = function () {
            return Math.floor(1e3 * Math.random()) + 1
        }, s.run = function (o, t) {
            var e, a, n = {pid: "aplus", code: 101, msg: "异常内容"}, s = "";
            try {
                var c = window.goldlog || {}, i = c._$ || {}, l = i.meta_info || {},
                    g = parseFloat(l["aplus-tracker-rate"]);
                if (e = this.opts || {}, "number" == typeof g && g + "" != "NaN" || (g = e.ratio), a = this.getRandom(), t || a <= 1e3 * g) {
                    s = "//gm.mmstat.com/" + e.logkey, o.rel = i.script_name + "@" + c.lver, o.type = o.code, o.uid = encodeURIComponent(c.getCookie("cna")), o = r.assign(n, o);
                    var u = r.obj2param(o);
                    c.tracker = c.send(s, {cache: r.makeCacheNum(), gokey: u, logtype: "2"}, "POST")
                }
            } catch (o) {
                r.logger({msg: "tracker.run() exec error: " + o})
            }
        }, o.exports = n
    }, function (o, t, e) {
        "use strict";
        var r = e(6), a = function (o) {
            var t = window.goldlog || {}, e = t._$ = t._$ || {}, r = t.spm_ab ? t.spm_ab.join(".") : "0.0",
                a = e.send_pv_count || 0;
            if (a < 1 && navigator && navigator.sendBeacon) {
                var n = window.goldlog_queue || (window.goldlog_queue = []), s = location.hostname + location.pathname;
                n.push({
                    action: ["goldlog", "_aplus_cplugin_m", "do_tracker_lostpv"].join("."),
                    arguments: [{
                        page: s,
                        page_url: location.protocol + "//" + s,
                        duration: o,
                        spm_ab: r,
                        msg: "dom_state=" + document.readyState
                    }]
                })
            }
        };
        t.run = function () {
            var o = new Date;
            r.on(window, "beforeunload", function () {
                var t = new Date, e = t.getTime() - o.getTime();
                a(e)
            })
        }
    }, function (o, t) {
        "use strict";
        var e = self, r = e.document, a = !!r.attachEvent, n = "attachEvent", s = "addEventListener", c = a ? n : s;
        t.getIframeUrl = function (o) {
            var t, e = "//g.alicdn.com";
            return t = goldlog && "function" == typeof goldlog.getCdnPath ? goldlog.getCdnPath() || e : e, (o || "https") + ":" + t + "/alilog/aplus_cplugin/@@APLUS_CPLUGIN_VER/ls.html?t=@@_VERSION_"
        }, t.on = function (o, t, r) {
            o[c]((a ? "on" : "") + t, function (o) {
                o = o || e.event;
                var t = o.target || o.srcElement;
                "function" == typeof r && r(o, t)
            }, !1)
        }, t.checkLs = function () {
            var o;
            try {
                window.localStorage && (localStorage.setItem("test_log_cna", "1"), "1" === localStorage.getItem("test_log_cna") && (localStorage.removeItem("test_log_cna"), o = !0))
            } catch (t) {
                o = !1
            }
            return o
        }, t.tracker_iframe_status = function (o, t) {
            var e = window.goldlog_queue || (window.goldlog_queue = []),
                r = goldlog.spm_ab ? goldlog.spm_ab.join(".") : "", a = "createIframe_" + t.status + "_id=" + o;
            t.msg && (a += "_" + t.msg), e.push({
                action: "goldlog._aplus_cplugin_m.do_tracker_browser_support",
                arguments: [{
                    page: location.hostname + location.pathname,
                    msg: a,
                    browser_attr: navigator.userAgent,
                    spm_ab: r,
                    cna: t.duration || "",
                    ratio: 1
                }]
            })
        }, t.tracker_ls_failed = function () {
            var o = window.goldlog_queue || (window.goldlog_queue = []),
                t = goldlog.spm_ab ? goldlog.spm_ab.join(".") : "";
            o.push({
                action: "goldlog._aplus_cplugin_m.do_tracker_browser_support",
                arguments: [{
                    page: location.hostname + location.pathname,
                    msg: "donot support localStorage",
                    browser_attr: navigator.userAgent,
                    spm_ab: t
                }]
            })
        }, t.processMsgData = function (o) {
            var t = {};
            try {
                var e = "{}";
                e = "TextEncoder" in window && "object" == typeof o ? new window.TextDecoder("utf-8").decode(o) : o, t = JSON.parse(e)
            } catch (o) {
                t = {}
            }
            return t
        }, t.do_pub_fn = function (o, t) {
            var e = window.goldlog_queue || (window.goldlog_queue = []);
            e.push({
                action: "goldlog.aplus_pubsub.publish",
                arguments: [o, t]
            }), e.push({action: "goldlog.aplus_pubsub.cachePubs", arguments: [o, t]})
        }
    }]);/*! 2021-05-13 17:41:41 v8.15.6 */
    !function (t) {
        function e(o) {
            if (n[o]) return n[o].exports;
            var a = n[o] = {exports: {}, id: o, loaded: !1};
            return t[o].call(a.exports, a, a.exports, e), a.loaded = !0, a.exports
        }

        var n = {};
        return e.m = t, e.c = n, e.p = "", e(0)
    }([function (t, e, n) {
        t.exports = n(1)
    }, function (t, e, n) {
        "use strict";
        !function () {
            var t = window;
            n(2)();
            var e = n(3), o = n(4);
            "ontouchend" in document.createElement("div") && (t.goldlog_queue || (t.goldlog_queue = [])).push({
                action: "goldlog.setMetaInfo",
                arguments: ["aplus-touch", "tap"]
            });
            var a = function () {
                n(97);
                var e = n(99), o = n(38);
                if (o.doPubMsg(["goldlogReady", "running"]), document.getElementsByTagName("body").length) {
                    var r = "g_tb_aplus_loaded";
                    if (t[r]) return;
                    t[r] = 1, n(112).initGoldlog(e)
                } else setTimeout(function () {
                    a()
                }, 50)
            }, r = function (t) {
                try {
                    e.do_tracker_jserror({
                        ratio: 1,
                        message: t && t.message,
                        error: encodeURIComponent(t && t.stack ? t.stack : ""),
                        filename: "aplusLoad"
                    })
                } catch (t) {
                }
            };
            try {
                a()
            } catch (t) {
                r(t, o.script_name + "@" + o.lver)
            }
        }()
    }, function (t, e) {
        t.exports = function () {
            var t = window.goldlog_queue || (window.goldlog_queue = []);
            try {
                var e = navigator.userAgent, n = /Trident/.test(e);
                n || t.push({
                    action: "goldlog.setMetaInfo",
                    arguments: ["aplus-p-url-init", window.location.href.substring(0, 850)]
                })
            } catch (t) {
            }
        }
    }, function (t, e) {
        "use strict";
        var n = function (t, e) {
            var n = window.goldlog_queue || (window.goldlog_queue = []);
            n.push({
                action: "goldlog._aplus_cplugin_track_deb.monitor",
                arguments: [{
                    key: "APLUS_PLUGIN_DEBUG",
                    title: "aplus_core",
                    msg: ["_error_:methodName=" + e + ",params=" + JSON.stringify(t)],
                    type: "updateMsg",
                    description: e || "aplus_core"
                }]
            })
        }, o = function (t, e, n) {
            var o = window.goldlog_queue || (window.goldlog_queue = []);
            o.push({action: ["goldlog", "_aplus_cplugin_m", e].join("."), arguments: [t, n]})
        };
        e.do_tracker_jserror = function (t, e) {
            var a = "do_tracker_jserror";
            o(t, a, e), n(t, a)
        }, e.do_tracker_obsolete_inter = function (t, e) {
            var a = "do_tracker_obsolete_inter";
            o(t, a, e), n(t, a)
        }, e.wrap = function (t) {
            if ("function" == typeof t) try {
                t()
            } catch (t) {
                n({msg: t.message || t}, "exception")
            } finally {
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(5), a = n(6), r = n(7);
        e.APLUS_ENV = "production", e.lver = a.lver, e.toUtVersion = a.toUtVersion, e.script_name = a.script_name, e.recordTypes = o.recordTypes, e.KEY = o.KEY, e.context = r.context, e.context_prepv = r.context_prepv, e.aplus_init = n(15).plugins_init, e.plugins_pv = n(36).plugins_pv, e.plugins_prepv = n(63).plugins_prepv, e.context_hjlj = n(64), e.plugins_hjlj = n(66).plugins_hjlj, e.beforeUnload = n(78), e.initLoad = n(83), e.spmException = n(87), e.goldlog_path = n(88), e.is_auto_pv = "true", e.utilPvid = n(92), e.disablePvid = "false", e.mustSpmE = !0, e.LS_CNA_KEY = "APLUS_CNA"
    }, function (t, e) {
        "use strict";
        e.recordTypes = {
            hjlj: "COMMON_HJLJ",
            uhjlj: "DATACLICK_HJLJ",
            pv: "PV",
            prepv: "PREPV"
        }, e.KEY = {
            NAME_STORAGE: {
                REFERRER: "wm_referrer",
                REFERRER_PV_ID: "refer_pv_id",
                LOST_PV_PAGE_DURATION: "lost_pv_page_duration",
                LOST_PV_PAGE_SPMAB: "lost_pv_page_spmab",
                LOST_PV_PAGE: "lost_pv_page",
                LOST_PV_PAGE_MSG: "lost_pv_page_msg"
            }
        }
    }, function (t, e) {
        "use strict";
        e.lver = "8.15.6", e.toUtVersion = "v20210513", e.script_name = "aplus_int"
    }, function (t, e, n) {
        "use strict";
        e.context = n(8), e.context_prepv = n(14)
    }, function (t, e, n) {
        "use strict";

        function o() {
            return {
                compose: {maxTimeout: 5500},
                etag: {egUrl: "gj.mmstat.com/eg.js", cna: i.getCookie("cna")},
                where_to_sendpv: {url: "//gj.mmstat.com/v.gif", urlRule: s.getBeaconSrc}
            }
        }

        function a() {
            return r.assign(new s.initConfig, new o)
        }

        var r = n(9), i = n(11), s = n(13);
        t.exports = a
    }, function (t, e, n) {
        "use strict";

        function o(t, e) {
            return "function" != typeof Object.assign ? function (t) {
                if (null === t) throw new TypeError("Cannot convert undefined or null to object");
                for (var e = Object(t), n = 1; n < arguments.length; n++) {
                    var o = arguments[n];
                    if (null !== o) for (var a in o) Object.prototype.hasOwnProperty.call(o, a) && (e[a] = o[a])
                }
                return e
            }(t, e) : Object.assign({}, t, e)
        }

        function a(t) {
            return "function" == typeof t
        }

        function r(t) {
            return "string" == typeof t
        }

        function i(t) {
            return "undefined" == typeof t
        }

        function s(t, e) {
            return t.indexOf(e) > -1
        }

        var u = window;
        e.assign = o, e.makeCacheNum = function () {
            return Math.floor(268435456 * Math.random()).toString(16)
        }, e.each = n(10), e.isStartWith = function (t, e) {
            return 0 === t.indexOf(e)
        }, e.isEndWith = function (t, e) {
            var n = t.length, o = e.length;
            return n >= o && t.indexOf(e) == n - o
        }, e.any = function (t, e) {
            var n, o = t.length;
            for (n = 0; n < o; n++) if (e(t[n])) return !0;
            return !1
        }, e.isFunction = a, e.isArray = function (t) {
            return Array.isArray ? Array.isArray(t) : /Array/.test(Object.prototype.toString.call(t))
        }, e.isString = r, e.isNumber = function (t) {
            return "number" == typeof t
        }, e.isUnDefined = i, e.isContain = s;
        var c = function (t) {
            var e, n = t.constructor === Array ? [] : {};
            if ("object" == typeof t) {
                if (u.JSON && u.JSON.parse) e = JSON.stringify(t), n = JSON.parse(e); else for (var o in t) n[o] = "object" == typeof t[o] ? c(t[o]) : t[o];
                return n
            }
        };
        e.cloneObj = c, e.cloneDeep = c
    }, function (t, e) {
        "use strict";
        t.exports = function (t, e) {
            var n, o = t.length;
            for (n = 0; n < o; n++) {
                var a = e(t[n], n);
                if ("break" === a) break
            }
        }
    }, function (t, e, n) {
        "use strict";

        function o(t) {
            var e = s.cookie.match(new RegExp("(?:^|;)\\s*" + t + "=([^;]+)"));
            return e ? e[1] : ""
        }

        function a(t, e, n) {
            n || (n = {});
            var a = new Date;
            "session" === n.expires || (n.expires && ("number" == typeof n.expires || n.expires.toUTCString) ? ("number" == typeof n.expires ? a.setTime(a.getTime() + 24 * n.expires * 60 * 60 * 1e3) : a = n.expires, e += "; expires=" + a.toUTCString()) : (a.setTime(a.getTime() + 63072e7), e += "; expires=" + a.toUTCString())), e += "; path=" + (n.path ? n.path : "/"), e += "; domain=" + n.domain, s.cookie = t + "=" + e;
            var r = 0;
            try {
                var i = navigator.userAgent.match(/Chrome\/\d/);
                i && i[0] && (r = i[0].split("/")[1], r && (r = parseInt(r)))
            } catch (t) {
            }
            return n.SameSite && r >= 8 && (e += "; SameSite=" + n.SameSite, e += "; Secure", s.cookie = t + "=" + e), o(t)
        }

        function r(t, e, n) {
            try {
                if (n || (n = {}), n.domain) a(t, e, n); else for (var o = c.getDomains(), r = 0; r < o.length;) n.domain = o[r], a(t, e, n) ? r = o.length : r++
            } catch (t) {
            }
        }

        function i() {
            var t = {};
            return u.each(p, function (e) {
                t[e] = o(e)
            }), t.cnaui = /\btanx\.com$/.test(l) ? o("cnaui") : "", t
        }

        var s = document, u = n(9), c = n(12), l = location.hostname;
        e.getCookie = o, e.setCookie = r;
        var p = ["tracknick", "thw", "cna"];
        e.getData = i, e.getHng = function () {
            return encodeURIComponent(o("hng") || "")
        }
    }, function (t, e) {
        "use strict";
        e.getDomains = function () {
            var t = [];
            try {
                for (var e = location.hostname, n = e.split("."), o = 2; o <= n.length;) t.push(n.slice(n.length - o).join(".")), o++
            } catch (t) {
            }
            return t
        }
    }, function (t, e, n) {
        "use strict";

        function o(t, e, n) {
            var o = window.goldlog || {}, s = o.getMetaInfo("aplus-ifr-pv") + "" == "1";
            return e ? r(t) ? "yt" : "m" : n && !s ? a.isContain(t, "wrating.com") ? "k" : i(t) || "y" : i(t) || "v"
        }

        var a = n(9), r = function (t) {
            for (var e = ["youku.com", "soku.com", "tudou.com", "laifeng.com"], n = 0; n < e.length; n++) {
                var o = e[n];
                if (a.isContain(t, o)) return !0
            }
            return !1
        }, i = function (t) {
            for (var e = [["scmp.com", "sc"], ["luxehomes.com.hk", "sc"], ["ays.com.hk", "sc"], ["cpjobs.com", "sc"], ["educationpost.com.hk", "sc"], ["cosmopolitan.com.hk", "sc"], ["elle.com.hk", "sc"], ["harpersbazaar.com.hk", "sc"], ["1688.com", "6"], ["youku.com", "yt"], ["soku.com", "yt"], ["tudou.com", "yt"], ["laifeng.com", "yt"]], n = 0; n < e.length; n++) {
                var o = e[n];
                if (a.isContain(t, o[0])) return o[1]
            }
            return ""
        };
        e.getBeaconSrc = o, e.initConfig = function () {
            return {
                compose: {},
                etag: {egUrl: "log.mmstat.com/eg.js", cna: "", tag: "", stag: "", lstag: "-1", lscnastatus: ""},
                can_to_sendpv: {flag: "NO"},
                userdata: {},
                what_to_sendpv: {pvdata: {}, exparams: {}},
                what_to_pvhash: {hash: []},
                what_to_sendpv_ut: {pvdataToUt: {}},
                what_to_sendpv_ut2: {isSuccess: !1, pvdataToUt: {}},
                when_to_sendpv: {aplusWaiting: ""},
                where_to_sendpv: {url: "//log.mmstat.com/o.gif", urlRule: o},
                where_to_sendlog_ut: {aplusToUT: {}, toUTName: "toUT"},
                hjlj: {what_to_hjlj: {logdata: {}}, what_to_hjlj_ut: {logdataToUT: {}}},
                network: {connType: "UNKNOWN"},
                is_single: !1
            }
        }
    }, function (t, e, n) {
        "use strict";

        function o() {
            return {
                etag: {egUrl: "log.mmstat.com/eg.js", cna: a.getCookie("cna"), tag: "", stag: ""},
                compose: {},
                where_to_prepv: {url: "//log.mmstat.com/v.gif", urlRule: r.getBeaconSrc},
                userdata: {},
                what_to_prepv: {logdata: {}},
                what_to_hjlj_exinfo: {
                    EXPARAMS_FLAG: "EXPARAMS",
                    exinfo: [],
                    exparams_key_names: ["uidaplus", "pc_i", "pu_i"]
                },
                is_single: !1
            }
        }

        var a = n(11), r = n(13);
        t.exports = o
    }, function (t, e, n) {
        "use strict";
        e.plugins_init = [{name: "where_to_sendpv", enable: !0, path: n(16)}, {
            name: "etag",
            enable: !0,
            path: n(32)
        }, {name: "etag_sync", enable: !0, path: n(35)}]
    }, function (t, e, n) {
        "use strict";
        var o = n(17), a = n(25)();
        t.exports = function () {
            return o.assign(a, {
                run: function () {
                    var t = this.getAplusMetaByKey("aplus-rhost-v"), e = this.options.context.where_to_sendpv || {},
                        n = e.url || "", a = this.getGifPath(e.urlRule, n),
                        r = o.getPvUrl({metaName: "aplus-rhost-v", metaValue: t, gifPath: a, url: n});
                    e.url = r, this.options.context.where_to_sendpv = e
                }
            })
        }
    }, function (t, e, n) {
        "use strict";

        function o(t) {
            t = (t || "").split("#")[0].split("?")[0];
            var e = t.length, n = function (t) {
                var e, n = t.length, o = 0;
                for (e = 0; e < n; e++) o = 31 * o + t.charCodeAt(e);
                return o
            };
            return e ? n(e + "#" + t.charCodeAt(e - 1)) : -1
        }

        function a(t) {
            for (var e = t.split("&"), n = 0, o = e.length, a = {}; n < o; n++) {
                var r = e[n], i = r.indexOf("="), s = r.substring(0, i), u = r.substring(i + 1);
                a[s] = p.tryToDecodeURIComponent(u)
            }
            return a
        }

        function r(t) {
            if ("function" != typeof t) throw new TypeError(t + " is not a function");
            return t
        }

        function i(t) {
            var e, n, o, a = [], r = t.length;
            for (o = 0; o < r; o++) e = t[o][0], n = t[o][1], a.push(l.isStartWith(e, v) ? n : e + "=" + encodeURIComponent(n));
            return a.join("&")
        }

        function s(t) {
            var e, n, o, a = {}, r = t.length;
            for (o = 0; o < r; o++) e = t[o][0], n = t[o][1], a[e] = n;
            return a
        }

        function u(t, e) {
            var n, o, a, r = [];
            for (n in t) t.hasOwnProperty(n) && (o = "" + t[n], a = n + "=" + encodeURIComponent(o), e ? r.push(a) : r.push(l.isStartWith(n, v) ? o : a));
            return r.join("&")
        }

        function c(t, e) {
            var n = t.indexOf("?") == -1 ? "?" : "&", o = e ? l.isArray(e) ? i(e) : u(e) : "";
            return o ? t + n + o : t
        }

        var l = n(9), p = n(18), g = n(21), f = parent !== self;
        e.is_in_iframe = f, e.makeCacheNum = l.makeCacheNum, e.isStartWith = l.isStartWith, e.isEndWith = l.isEndWith, e.any = l.any, e.each = l.each, e.assign = l.assign, e.isFunction = l.isFunction, e.isArray = l.isArray, e.isString = l.isString, e.isNumber = l.isNumber, e.isUnDefined = l.isUnDefined, e.isContain = l.isContain, e.sleep = n(22).sleep, e.makeChkSum = o, e.tryToDecodeURIComponent = p.tryToDecodeURIComponent, e.nodeListToArray = p.nodeListToArray, e.parseSemicolonContent = p.parseSemicolonContent, e.param2obj = a;
        var d = n(23), _ = function (t) {
            return /^(\/\/){0,1}(\w+\.){1,}\w+((\/\w+){1,})?$/.test(t)
        };
        e.hostValidity = _;
        var h = function (t, e) {
            var n = /^(\/\/){0,1}(\w+\.){1,}\w+\/\w+\.gif$/.test(t), o = _(t), a = "";
            return n ? a = "isGifPath" : o && (a = "isHostPath"), a || d.logger({msg: e + ": " + t + ' is invalid, suggestion: "xxx.mmstat.com"'}), a
        }, m = function (t) {
            return !/^\/\/gj\.mmstat/.test(t) && goldlog.isInternational() && (t = t.replace(/^\/\/\w+\.mmstat/, "//gj.mmstat")), t
        };
        e.filterIntUrl = m, e.getPvUrl = function (t) {
            t || (t = {});
            var e, n, o = t.metaValue && h(t.metaValue, t.metaName), a = "";
            "isGifPath" === o ? (e = /^\/\//.test(t.metaValue) ? "" : "//", a = e + t.metaValue) : "isHostPath" === o && (e = /^\/\//.test(t.metaValue) ? "" : "//", n = /\/$/.test(t.metaValue) ? "" : "/", a = e + t.metaValue + n + t.gifPath);
            var r;
            return a ? r = a : (e = 0 === t.gifPath.indexOf("/") ? t.gifPath : "/" + t.gifPath, r = t.url && t.url.replace(/\/\w+\.gif/, e)), r
        }, e.indexof = n(24).indexof, e.callable = r;
        var v = "::-plain-::";
        e.mkPlainKey = function () {
            return v + Math.random()
        }, e.s_plain_obj = v, e.mkPlainKeyForExparams = function (t) {
            var e = t || v;
            return e + "exparams"
        }, e.rndInt32 = function () {
            return Math.round(2147483647 * Math.random())
        }, e.arr2param = i, e.arr2obj = s, e.obj2param = u, e.makeUrl = c, e.ifAdd = function (t, e) {
            var n, o, a, r, i = e.length;
            for (n = 0; n < i; n++) o = e[n], a = o[0], r = o[1], r && t.push([a, r])
        }, e.isStartWithProtocol = g.isStartWithProtocol, e.param2arr = function (t) {
            for (var e, n = t.split("&"), o = 0, a = n.length, r = []; o < a; o++) e = n[o].split("="), r.push([e.shift(), e.join("=")]);
            return r
        }, e.catchException = function (t, e, n) {
            var o = window, a = o.goldlog_queue || (o.goldlog_queue = []), r = t;
            "object" == typeof e && e.message && (r = r + "_" + e.message), n && n.msg && (r += "_" + n.msg), a.push({
                action: "goldlog._aplus_cplugin_m.do_tracker_jserror",
                arguments: [{message: r, error: JSON.stringify(e), filename: t}]
            })
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(19), a = n(20);
        t.exports = {
            tryToDecodeURIComponent: function (t, e) {
                var n = e || "";
                if (t) try {
                    n = decodeURIComponent(t)
                } catch (t) {
                }
                return n
            }, parseSemicolonContent: function (t, e, n) {
                e = e || {};
                var a, r, i = t.split(";"), s = i.length;
                for (a = 0; a < s; a++) {
                    r = i[a].split("=");
                    var u = o.trim(r.slice(1).join("="));
                    e[o.trim(r[0]) || ""] = n ? u : this.tryToDecodeURIComponent(u)
                }
                return e
            }, nodeListToArray: function (t) {
                var e, n;
                try {
                    return e = [].slice.call(t)
                } catch (a) {
                    e = [], n = t.length;
                    for (var o = 0; o < n; o++) e.push(t[o]);
                    return e
                }
            }, getLsCna: function (t, e) {
                if (a.set && a.test()) {
                    var n = "", o = a.get(t);
                    if (o) {
                        var r = o.split("_") || [];
                        n = e ? r.length > 1 && e === r[0] ? r[1] : "" : r.length > 1 ? r[1] : ""
                    }
                    return decodeURIComponent(n)
                }
                return ""
            }, setLsCna: function (t, e, n) {
                n && a.set && a.test() && a.set(t, e + "_" + encodeURIComponent(n))
            }, getUrl: function (t) {
                var e = t || "//log.mmstat.com/eg.js";
                try {
                    var n = goldlog.getMetaInfo("aplus-rhost-v"), o = /[[a-z|0-9\.]+[a-z|0-9]/, a = n.match(o);
                    a && a[0] && (e = e.replace(o, a[0]))
                } catch (t) {
                }
                return e
            }
        }
    }, function (t, e) {
        "use strict";

        function n(t) {
            return "string" == typeof t ? t.replace(/^\s+|\s+$/g, "") : ""
        }

        e.trim = n
    }, function (t, e) {
        "use strict";
        t.exports = {
            set: function (t, e) {
                try {
                    return localStorage.setItem(t, e), !0
                } catch (t) {
                    return !1
                }
            }, get: function (t) {
                try {
                    return localStorage.getItem(t)
                } catch (t) {
                    return ""
                }
            }, test: function () {
                var t = "grey_test_key";
                try {
                    return localStorage.setItem(t, 1), localStorage.removeItem(t), !0
                } catch (t) {
                    return !1
                }
            }, remove: function (t) {
                localStorage.removeItem(t)
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(9), a = function () {
            if (goldlog.aplusDebug) {
                var t = location.protocol;
                return "http:" !== t && "https:" !== t && (t = "https:"), t
            }
            return "https:"
        };
        e.getProtocal = a, e.isStartWithProtocol = function (t) {
            for (var e = ["javascript:", "tel:", "sms:", "mailto:", "tmall://", "#"], n = 0, a = e.length; n < a; n++) if (o.isStartWith(t, e[n])) return !0;
            return !1
        }
    }, function (t, e) {
        "use strict";
        e.sleep = function (t, e) {
            return setTimeout(function () {
                e()
            }, t)
        }
    }, function (t, e) {
        "use strict";
        var n = function () {
            var t = !1;
            return "boolean" == typeof goldlog.aplusDebug && (t = goldlog.aplusDebug), t
        };
        e.isDebugAplus = n;
        var o = function (t) {
            t || (t = {});
            var e = t.level || "warn";
            window.console && window.console[e] && window.console[e](t.msg)
        };
        e.logger = o
    }, function (t, e) {
        "use strict";
        e.indexof = function (t, e) {
            var n = -1;
            try {
                n = t.indexOf(e)
            } catch (a) {
                for (var o = 0; o < t.length; o++) t[o] === e && (n = o)
            } finally {
                return n
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(17), a = n(26), r = n(27);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, getMetaInfo: function () {
                    var t = a.getGoldlogVal("_$") || {}, e = t.meta_info || r.getInfo();
                    return e
                }, getAplusMetaByKey: function (t) {
                    var e = this.getMetaInfo() || {};
                    return e[t]
                }, getGifPath: function (t, e) {
                    var n, r = a.getGoldlogVal("_$") || {};
                    if ("function" == typeof t) n = t(location.hostname, r.is_terminal, o.is_in_iframe) + ".gif"; else if (!n && e) {
                        var i = e.match(/\/\w+\.gif/);
                        i && i.length > 0 && (n = i[0])
                    }
                    return n || (n = r.is_terminal ? "m.gif" : "v.gif"), n
                }, run: function () {
                    var t = !!this.options.context.is_single;
                    if (!t) {
                        var e = this.getAplusMetaByKey("aplus-rhost-v"), n = this.options.context.where_to_sendpv || {},
                            a = n.url || "", r = this.getGifPath(n.urlRule, a), i = o.getPvUrl({
                                metaName: "aplus-rhost-v",
                                metaValue: e,
                                gifPath: r,
                                url: o.filterIntUrl(a)
                            });
                        n.url = i, this.options.context.where_to_sendpv = n
                    }
                }
            }
        }
    }, function (t, e) {
        "use strict";
        var n = function (t) {
            var e;
            try {
                window.goldlog || (window.goldlog = {}), e = window.goldlog[t]
            } catch (t) {
                e = ""
            } finally {
                return e
            }
        };
        e.getGoldlogVal = n;
        var o = function (t, e) {
            var n = !1;
            try {
                window.goldlog || (window.goldlog = {}), t && (window.goldlog[t] = e, n = !0)
            } catch (t) {
                n = !1
            } finally {
                return n
            }
        };
        e.setGoldlogVal = o, e.getClientInfo = function () {
            return n("_aplus_client") || {}
        }
    }, function (t, e, n) {
        "use strict";

        function o(t) {
            var e, n, o, a = t.length, r = {};
            for (h._microscope_data = r, e = 0; e < a; e++) n = t[e], "microscope-data" === f.tryToGetAttribute(n, "name") && (o = f.tryToGetAttribute(n, "content"), l.parseSemicolonContent(o, r), h.is_head_has_meta_microscope_data = !0);
            h._microscope_data_params = l.obj2param(r), h.ms_data_page_id = r.pageId, h.ms_data_shop_id = r.shopId, h.ms_data_instance_id = r.siteInstanceId, h.ms_data_siteCategoryId = r.siteCategory, h.ms_prototype_id = r.prototypeId, h.site_instance_id_or_shop_id = h.ms_data_instance_id || h.ms_data_shop_id, h._atp_beacon_data = {}, h._atp_beacon_data_params = ""
        }

        function a(t) {
            var e, n = function () {
                var e;
                return document.querySelector && (e = document.querySelector("meta[name=data-spm]")), g.each(t, function (t) {
                    "data-spm" === f.tryToGetAttribute(t, "name") && (e = t)
                }), e
            }, o = n();
            return o && (e = f.tryToGetAttribute(o, "data-spm-protocol")), e
        }

        function r(t) {
            var e = t.isonepage || "-1", n = e.split("|"), o = n[0], a = n[1] ? n[1] : "";
            t.isonepage_data = {isonepage: o, urlpagename: a}, t["aplus-pagename"] = a
        }

        function i() {
            var t = d.getMetaTags();
            o(t), g.each(t, function (t) {
                var e = f.tryToGetAttribute(t, "name");
                if (/^aplus/.test(e) && (h[e] = d.getMetaCnt(e), e === v)) try {
                    c = h[e] = JSON.parse(d.getMetaCnt(e))
                } catch (t) {
                }
            }), g.each(m, function (t) {
                h[t] = d.getMetaCnt(t)
            }), h.spm_protocol = a(t), c && (h = g.assign(h, c));
            var e, n, i = ["aplus-rate-ahot"], s = i.length;
            for (e = 0; e < s; e++) n = i[e], h[n] = parseFloat(h[n]);
            return r(h), b = h || {}, h
        }

        function s() {
            return b || i()
        }

        function u(t) {
            p.logger({msg: "please do not repeat setPriorityMetaInfo " + t})
        }

        var c, l = n(17), p = n(23), g = n(9), f = n(28), d = n(29), _ = n(30), h = {},
            m = ["ahot-aplus", "isonepage", "spm-id", "data-spm", "microscope-data"], v = "aplus-x-settings", b = {};
        e.setMetaInfo = function (t, e) {
            if (b || (b = {}), "object" == typeof c && c[t]) return u(t), !0;
            if (t === v) {
                if (c) u(t); else try {
                    c = "object" == typeof e ? e : JSON.parse(e), b = g.assign(b, c)
                } catch (t) {
                    console && console.log(t)
                }
                return !0
            }
            return b[t] = e, !0
        };
        var y = function (t) {
            return b || (b = {}), b[t] || ""
        };
        e.getMetaInfo = y, e.getInfo = i, e.qGet = s, e.appendMetaInfo = function (t, e) {
            var n = function (t, e) {
                goldlog.setMetaInfo(t, e, {from: "appendMetaInfo"})
            };
            if (t && e) {
                var o, a = function (o) {
                    try {
                        var a = "string" == typeof e ? JSON.parse(e) : e;
                        n(t, g.assign(o, a))
                    } catch (t) {
                    }
                }, r = function (o) {
                    try {
                        var a = "string" == typeof e ? JSON.parse(e) : e;
                        n(t, o.concat(a))
                    } catch (t) {
                    }
                }, i = function (t) {
                    return "EXPARAMS" === t ? _.getExparamsInfos("", t) : t ? t.split("&") : []
                }, s = function (o) {
                    try {
                        var a = i(o), r = i(e);
                        n(t, a.concat(r).join("&"))
                    } catch (t) {
                    }
                }, u = function (t) {
                    t.constructor === Array ? r(t) : a(t)
                }, c = goldlog.getMetaInfo(t);
                if ("aplus-exinfo" === t && (s(c), o = !0), c) if ("object" == typeof c) u(c), o = !0; else try {
                    var l = JSON.parse(c);
                    "object" == typeof l && (u(l), o = !0)
                } catch (t) {
                }
                o || n(t, e)
            }
        }
    }, function (t, e) {
        "use strict";
        e.tryToGetAttribute = function (t, e) {
            return t && t.getAttribute ? t.getAttribute(e) || "" : ""
        };
        var n = function (t, e, n) {
            if (t && t.setAttribute) try {
                t.setAttribute(e, n)
            } catch (t) {
            }
        };
        e.tryToSetAttribute = n, e.tryToRemoveAttribute = function (t, e) {
            if (t && t.removeAttribute) try {
                t.removeAttribute(e)
            } catch (o) {
                n(t, e, "")
            }
        }
    }, function (t, e, n) {
        "use strict";

        function o(t) {
            return i = i || document.getElementsByTagName("head")[0], s && !t ? s : i ? s = i.getElementsByTagName("meta") : []
        }

        function a(t, e) {
            var n, a, r, i = o(), s = i.length;
            for (n = 0; n < s; n++) a = i[n], u.tryToGetAttribute(a, "name") === t && (r = u.tryToGetAttribute(a, e || "content"));
            return r || ""
        }

        function r(t) {
            var e = {isonepage: "-1", urlpagename: ""}, n = t.qGet();
            if (n && n.hasOwnProperty("isonepage_data")) e.isonepage = n.isonepage_data.isonepage, e.urlpagename = n.isonepage_data.urlpagename; else {
                var o = a("isonepage") || "-1", r = o.split("|");
                e.isonepage = r[0], e.urlpagename = r[1] ? r[1] : ""
            }
            return e
        }

        var i, s, u = n(28);
        e.getMetaTags = o, e.getMetaCnt = a, e.getOnePageInfo = r
    }, function (t, e, n) {
        "use strict";
        var o = n(17), a = n(31), r = n(24);
        e.getExparamsInfos = function (t, e) {
            var n = [], i = t || ["uidaplus", "pc_i", "pu_i"], s = a.getExParams(o) || "";
            s = s.replace(/&aplus&/, "&");
            for (var u = o.param2arr(s) || [], c = function (t) {
                return r.indexof(i, t) > -1
            }, l = 0; l < u.length; l++) {
                var p = u[l], g = p[0] || "", f = p[1] || "";
                g && f && ("EXPARAMS" === e || c(g)) && n.push(g + "=" + f)
            }
            return n
        }
    }, function (t, e, n) {
        "use strict";

        function o() {
            return s || (s = g.getElementById("beacon-aplus") || g.getElementById("tb-beacon-aplus")), s
        }

        function a(t) {
            var e = o(), n = p.tryToGetAttribute(e, "cspx");
            t && n && (t.nonce = n)
        }

        function r(t, e, n) {
            var r = "script", s = g.createElement(r);
            s.type = "text/javascript", s.async = !0;
            var c = o(), l = c && c.hasAttribute("crossorigin");
            l && (s.crossOrigin = "anonymous");
            var p = "https:" === location.protocol ? e || t : t;
            0 === p.indexOf("//") && (p = u.getProtocal() + p), s.src = p, n && (s.id = n), a(s);
            var f = g.getElementsByTagName(r)[0];
            i = i || g.getElementsByTagName("head")[0], f ? f.parentNode.insertBefore(s, f) : i && i.appendChild(s)
        }

        var i, s, u = n(21), c = n(9), l = n(23), p = n(28), g = document;
        e.getCurrentNode = o, e.addScript = r, e.loadScript = function (t, e) {
            function n(t) {
                o.onreadystatechange = o.onload = o.onerror = null, o = null, e(t)
            }

            var o = g.createElement("script");
            if (i = i || g.getElementsByTagName("head")[0], o.async = !0, "onload" in o) o.onload = n; else {
                var r = function () {
                    /loaded|complete/.test(o.readyState) && n()
                };
                o.onreadystatechange = r, r()
            }
            o.onerror = function (t) {
                n(t)
            }, o.src = t, a(o), i.appendChild(o)
        }, e.isTouch = function () {
            return "ontouchend" in document.createElement("div")
        };
        var f = function () {
            var t = goldlog && goldlog._$ ? goldlog._$ : {}, e = t.meta_info || {};
            return e["aplus-exparams"] || ""
        };
        e.getExParamsFromMeta = f, e.getExParams = function (t) {
            var e = o(), n = p.tryToGetAttribute(e, "exparams"), a = d(n, f(), t) || "";
            return a && a.replace(/&amp;/g, "&").replace(/\buser(i|I)d=/, "uidaplus=")
        };
        var d = function (t, e, n) {
            var o = "aplus&sidx=aplusSidex", a = t || o;
            try {
                if (e) {
                    var r = n.param2obj(e),
                        i = ["aplus", "cna", "spm-cnt", "spm-url", "spm-pre", "logtype", "pre", "uidaplus", "asid", "sidx", "trid", "gokey"];
                    c.each(i, function (t) {
                        r.hasOwnProperty(t) && (l.logger({msg: "Can not inject keywords: " + t}), delete r[t])
                    }), delete r[""];
                    var s = "";
                    if (t) {
                        var u = t.match(/aplus&/).index, p = u > 0 ? n.param2obj(t.substring(0, u)) : {};
                        delete p[""], s = n.obj2param(c.assign(p, r)) + "&" + t.substring(u, t.length)
                    } else s = n.obj2param(r) + "&" + o;
                    return s
                }
                return a
            } catch (t) {
                return a
            }
        };
        e.mergeExparams = d
    }, function (t, e, n) {
        "use strict";
        var o = n(3), a = n(11), r = n(31), i = n(18), s = n(33), u = n(34), c = n(26), l = n(4);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t;
                    var e = this.options.context.etag || {};
                    this.cna = e.cna || a.getCookie("cna"), this.setTag(0), this.setStag(-1), this.setLsTag("-1"), this.setEtag(this.cna || ""), this.requesting = !1, this.today = s.getFormatDate()
                }, setLsTag: function (t) {
                    this.lstag = t, this.options.context.etag.lstag = t
                }, setTag: function (t) {
                    this.tag = t, this.options.context.etag.tag = t
                }, setStag: function (t) {
                    this.stag = t, this.options.context.etag.stag = t
                }, setEtag: function (t) {
                    this.etag = t, this.options.context.etag.cna = t, a.getCookie("cna") !== t && a.setCookie("cna", t, {SameSite: "none"})
                }, setLscnaStatus: function (t) {
                    this.options.context.etag.lscnastatus = t
                }, run: function (t, e) {
                    var n = this;
                    if (n.cna) return void n.setTag(1);
                    var a = null, s = u.getUrl(this.options.context.etag || {});
                    n.requesting = !0;
                    var p = function () {
                        setTimeout(function () {
                            e()
                        }, 20), clearTimeout(a)
                    };
                    return r.loadScript(s, function (t) {
                        var e, a;
                        if (t && "error" === t.type ? (n.setStag(-3), o.do_tracker_jserror({
                            message: "loadError",
                            error: "",
                            filename: "etag_ls"
                        })) : (e = c.getGoldlogVal("Etag"), e && n.setEtag(e), a = c.getGoldlogVal("stag"), "undefined" != typeof a && n.setStag(a)), n.requesting) {
                            if (2 === a || 4 === a) {
                                var r = i.getLsCna(l.LS_CNA_KEY);
                                r ? (n.setLsTag(1), n.setEtag(r)) : (n.setLsTag(0), i.setLsCna(l.LS_CNA_KEY, n.today, e))
                            }
                            p()
                        }
                    }), a = setTimeout(function () {
                        n.requesting = !1, n.setStag(-2), e()
                    }, 1500), 2e3
                }
            }
        }
    }, function (t, e) {
        "use strict";

        function n(t, e, n) {
            var o = "" + Math.abs(t), a = e - o.length, r = t >= 0;
            return (r ? n ? "+" : "" : "-") + Math.pow(10, Math.max(0, a)).toString().substr(1) + o
        }

        e.getFormatDate = function (t) {
            var e = new Date;
            try {
                return [e.getFullYear(), n(e.getMonth() + 1, 2, 0), n(e.getDate(), 2, 0)].join(t || "")
            } catch (t) {
                return ""
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(18);
        e.getUrl = function (t) {
            var e = (new Date).getTime(), n = o.getUrl(t && t.egUrl ? t.egUrl : "gj.mmstat.com/eg.js"),
                a = n.match(/[\w+\.]+[a-z|A-Z|0-9]+\/(eg|ge).js/);
            return 0 !== n.indexOf("http") && a && a.length > 0 && (n = "//" + a[0]), n + "?t=" + e
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(18), a = n(31), r = n(34), i = n(4), s = n(33), u = n(20);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t, this.today = s.getFormatDate()
                }, run: function () {
                    var t = this;
                    if (u.test()) {
                        var e = o.getLsCna(i.LS_CNA_KEY, t.today);
                        e || setTimeout(function () {
                            var e = r.getUrl(t.options.context.etag || {});
                            a.loadScript(e, function (e) {
                                e && "error" !== e.type && o.setLsCna(i.LS_CNA_KEY, t.today, goldlog.Etag)
                            })
                        }, 1e3)
                    }
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        e.plugins_pv = [{name: "etag", enable: !0, path: n(37)}, {
            name: "when_to_sendpv",
            enable: !0,
            path: n(39)
        }, {name: "where_to_sendlog_ut", enable: !0, path: n(40)}, {
            name: "is_single",
            enable: !0,
            path: n(42)
        }, {name: "what_to_pvhash", enable: !0, path: n(43)}, {
            name: "what_to_sendpv",
            enable: !0,
            path: n(44)
        }, {
            name: "what_to_sendpv_userdata",
            enable: !0,
            path: n(48),
            deps: ["what_to_sendpv"]
        }, {
            name: "what_to_sendpv_etag",
            enable: !0,
            path: n(53),
            deps: ["etag", "what_to_sendpv"]
        }, {
            name: "what_to_sendpv_ut2",
            enable: !0,
            path: n(54),
            deps: ["where_to_sendlog_ut"]
        }, {
            name: "what_to_sendpv_ut",
            enable: !0,
            path: n(56),
            deps: ["where_to_sendlog_ut"]
        }, {
            name: "what_to_pv_slog",
            enable: !0,
            path: n(57),
            deps: ["what_to_sendpv", "what_to_sendpv_ut2", "what_to_sendpv_ut"]
        }, {name: "can_to_sendpv", enable: !0, path: n(58)}, {
            name: "where_to_sendpv",
            enable: !0,
            path: n(16),
            deps: ["is_single"]
        }, {
            name: "do_sendpv_ut2",
            enable: !0,
            path: n(59),
            deps: ["what_to_sendpv_ut2", "where_to_sendlog_ut"]
        }, {
            name: "do_sendpv_ut",
            enable: !0,
            path: n(60),
            deps: ["what_to_sendpv_ut", "where_to_sendlog_ut", "do_sendpv_ut2"]
        }, {
            name: "do_sendpv",
            enable: !0,
            path: n(61),
            deps: ["is_single", "what_to_sendpv", "where_to_sendpv", "do_sendpv_ut"]
        }, {name: "after_pv", enable: !0, path: n(62)}]
    }, function (t, e, n) {
        "use strict";
        var o = n(38);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, run: function () {
                    var t = this;
                    o.doSubOnceMsg("aplusInitContext", function (e) {
                        e.etag && (t.options.context.etag = e.etag)
                    })
                }
            }
        }
    }, function (t, e) {
        "use strict";
        var n = "function", o = function () {
            var t = window.goldlog || {}, e = t.aplus_pubsub || {}, o = typeof e.publish === n;
            return o ? e : ""
        };
        e.doPubMsg = function (t) {
            var e = o();
            e && typeof e.publish === n && e.publish.apply(e, t)
        }, e.doCachePubs = function (t) {
            var e = o();
            e && typeof e.cachePubs === n && e.cachePubs.apply(e, t)
        }, e.doSubMsg = function (t, e) {
            var a = o();
            a && typeof a.subscribe === n && a.subscribe(t, e)
        }, e.doSubOnceMsg = function (t, e) {
            var a = o();
            a && typeof a.subscribeOnce === n && a.subscribeOnce(t, e)
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(26), a = n(22), r = n(27);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, getMetaInfo: function () {
                    var t = o.getGoldlogVal("_$") || {}, e = t.meta_info || r.getInfo();
                    return e
                }, getAplusWaiting: function () {
                    var t = this.getMetaInfo() || {};
                    return t["aplus-waiting"]
                }, run: function (t, e) {
                    var n = this.options.config || {}, o = this.getAplusWaiting();
                    if (o && n.is_auto) switch (o = this.getAplusWaiting() + "", this.options.context.when_to_sendpv = {aplusWaiting: o}, o) {
                        case"MAN":
                            return "done";
                        case"1":
                            return this.options.context.when_to_sendpv.isWait = !0, a.sleep(6e3, function () {
                                e()
                            }), 6e3;
                        default:
                            var r = 1 * o;
                            if (r + "" != "NaN") return this.options.context.when_to_sendpv.isWait = !0, a.sleep(r, function () {
                                e()
                            }), r
                    }
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(41);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, getAplusToUT: function (t) {
                    return {toUT2: o.getAplusToUT("toUT2", t), toUT: o.getAplusToUT("toUT", t)}
                }, run: function () {
                    if ("Umeng4Aplus" === goldlog.aplusBridgeName) this.options.context.where_to_sendlog_ut.toUTName = "toUT2"; else {
                        var t = this.getAplusToUT(this.options.config.recordType);
                        this.options.context.where_to_sendlog_ut.aplusToUT = t
                    }
                }
            }
        }
    }, function (t, e) {
        "use strict";
        var n = navigator.userAgent, o = /WindVane/i.test(n);
        e.is_WindVane = o;
        var a = function () {
            var t = goldlog.getMetaInfo("aplus_chnl");
            return !(!t || !t.isAvailable || "function" != typeof t.toUT2 && "function" != typeof t.toUT) && t
        };
        e.isAplusChnl = a, e.getAplusToUT = function (t, e) {
            var n = {}, r = a();
            if ("object" == typeof r) n.bridgeName = r.bridgeName || "customBridge", n.bridgeVersion = r.bridgeVersion || r.version || "", n.isAvailable = r.isAvailable, n.toUT2 = r.toUT2 || r.toUT; else {
                var i = window.WindVane || {};
                if (o && i && i.isAvailable && "function" == typeof i.call) {
                    var s = t || "toUT", u = goldlog.getMetaInfo("aplus-toUT") + "";
                    "toUT2HC" === u && "PV" === e && (s = u), n = {
                        bridgeName: "WindVane",
                        bridgeVersion: i.version || "",
                        isAvailable: !0,
                        toUT2: function (t, e, n, o) {
                            return i.call("WVTBUserTrack", s, t, e, n, o)
                        }
                    }
                }
            }
            return n
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(26), a = n(4);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, isSingle_pv: function () {
                    var t = o.getGoldlogVal("_$") || {};
                    return !("1" === t.meta_info["aplus-both-request"])
                }, isSingle_hjlj: function (t) {
                    var e = o.getGoldlogVal("_$") || {};
                    return !("1" === e.meta_info["aplus-both-request"]) && t && t.logkey && t.gmkey
                }, isSingle_uhjlj: function (t) {
                    var e = o.getGoldlogVal("_$") || {};
                    return (!t || !/^\/aplus\.99\.(\d)+$/.test(t.logkey)) && (!("1" === e.meta_info["aplus-both-request"]) && t && t.logkey)
                }, run: function () {
                    var t = this.options.context || {}, e = this.options.config || {},
                        n = t.where_to_sendlog_ut.aplusToUT || {}, o = n.toUT || {}, r = n.toUT2 || {},
                        i = !(!o.isAvailable && !r.isAvailable), s = t.userdata || {}, u = !!t.is_single;
                    switch (e.recordType) {
                        case a.recordTypes.uhjlj:
                            u = this.isSingle_uhjlj(s);
                            break;
                        case a.recordTypes.hjlj:
                            u = this.isSingle_hjlj(s);
                            break;
                        case a.recordTypes.pv:
                            u = this.isSingle_pv();
                            break;
                        default:
                            u = this.isSingle_pv()
                    }
                    this.options.context.is_single = i && u, this.options.context.ut_is_available = i
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(26);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, run: function () {
                    var t = this.options.context.what_to_pvhash || {}, e = o.getGoldlogVal("_$") || {},
                        n = e.meta_info || {}, a = n["aplus-pvhash"] || "", r = [];
                    "1" === a && (r = ["_aqx_uri", encodeURIComponent(location.href)]), t.hash = r, this.options.context.what_to_pvhash = t
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(17), a = n(9), r = n(31), i = n(26), s = n(28), u = n(11), c = n(45), l = n(46), p = n(47);
        t.exports = function () {
            return a.assign(p, {
                init: function (t) {
                    this.options = t, this.cookie_data || (this.cookie_data = u.getData()), this.client_info || (this.client_info = i.getClientInfo() || {});
                    var e = location.hash;
                    e && 0 === e.indexOf("#") && (e = e.substr(1)), this.loc_hash = e
                }, getExParams: function () {
                    var t = window, e = document, n = [], u = parent !== t.self,
                        l = e.getElementById("beacon-aplus") || e.getElementById("tb-beacon-aplus"),
                        p = s.tryToGetAttribute(l, "exparams"),
                        g = r.mergeExparams(p, r.getExParamsFromMeta(), o) || "";
                    g = g.replace(/&amp;/g, "&");
                    var f, d,
                        _ = ["taobao.com", "tmall.com", "etao.com", "hitao.com", "taohua.com", "juhuasuan.com", "alimama.com"],
                        h = i.getGoldlogVal("_$") || {}, m = h.meta_info || {};
                    if (u && !m["aplus-ifr-pv"]) {
                        for (d = _.length, f = 0; f < d; f++) if (o.isContain(location.hostname, _[f])) return n.push([o.mkPlainKeyForExparams(), g]), n;
                        g = g.replace(/\buser(i|I)d=\w*&?/, "")
                    }
                    g = g.replace(/\buser(i|I)d=/, "uidaplus="), g && n.push([o.mkPlainKeyForExparams(), g]);
                    var v = a.makeCacheNum();
                    return c.updateKey(n, "cache", v), n
                }, getExtra: function () {
                    var t = [], e = i.getGoldlogVal("_$") || {}, n = e.meta_info || {}, a = this.cookie_data || {},
                        r = this.getClientInfo(!0) || [];
                    return o.ifAdd(t, r), o.ifAdd(t, [["thw", a.thw], ["bucket_id", l.getBucketId(n)], ["urlokey", this.loc_hash], ["wm_instanceid", n.ms_data_instance_id]]), t
                }
            })
        }
    }, function (t, e) {
        "use strict";

        function n(t, e, n) {
            r(t, "spm-cnt", function (t) {
                var o = t.split(".");
                return o[0] = goldlog.spm_ab[0], o[1] = goldlog.spm_ab[1], e ? o[1] = o[1].split("/")[0] + "/" + e : o[1] = o[1].split("/")[0], n && (o[4] = n), o.join(".")
            })
        }

        function o(t, e) {
            var n = window.g_SPM && g_SPM._current_spm;
            n && r(t, "spm-url", function () {
                return [n.a, n.b, n.c, n.d].join(".") + (e ? "." + e : "")
            }, "spm-cnt")
        }

        function a(t, e) {
            var n, o, a, r = -1;
            for (n = 0, o = t.length; n < o; n++) if (a = t[n], a[0] === e) {
                r = n;
                break
            }
            r >= 0 && t.splice(r, 1)
        }

        function r(t, e, n, o) {
            var a, r, i = t.length, s = -1, u = "function" == typeof n;
            for (a = 0; a < i; a++) {
                if (r = t[a], r[0] === e) return void (u ? r[1] = n(r[1]) : r[1] = n);
                o && r[0] === o && (s = a)
            }
            o && (u && (n = n()), s > -1 ? t.splice(s, 0, [e, n]) : t.push([e, n]))
        }

        t.exports = {updateSPMCnt: n, updateSPMUrl: o, updateKey: r, removeKey: a}
    }, function (t, e, n) {
        "use strict";

        function o(t, e) {
            var n, o = 2146271213;
            for (n = 0; n < t.length; n++) o = (o << 5) + o + t.charCodeAt(n);
            return (65535 & o) % e
        }

        function a(t) {
            var e, n = r.getCookie("t");
            return "3" != t.ms_prototype_id && "5" != t.ms_prototype_id || (e = n ? o(n, 20) : ""), e
        }

        var r = n(11);
        e.getBucketId = a
    }, function (t, e, n) {
        "use strict";
        var o = n(17), a = n(9), r = n(26), i = n(41), s = n(11), u = n(4);
        t.exports = {
            init: function (t) {
                this.options = t, this.cookie_data || (this.cookie_data = s.getData())
            }, getBasicParams: function () {
                var t = document, e = r.getGoldlogVal("_$") || {}, n = e.spm || {}, a = e.meta_info || {},
                    i = a["aplus-ifr-pv"] + "" == "1", u = o.is_in_iframe && !i ? 0 : 1, c = this.options.config || {},
                    l = t.title;
                c.title && (l += "_" + c.title);
                var p = [["logtype", u], ["title", l], ["pre", e.page_referrer || ""], ["scr", screen.width + "x" + screen.height]],
                    g = a["aplus-p-url-init"];
                g && p.push(["_p_url", a["aplus-p-url"] || g]);
                var f = this.cookie_data || {}, d = this.options.context || {}, _ = d.etag || {},
                    h = _.cna || f.cna || s.getCookie("cna");
                h && p.push([o.mkPlainKey(), "cna=" + h]), f.tracknick && p.push([o.mkPlainKey(), "nick=" + f.tracknick]);
                var m = n.spm_url || "";
                return o.ifAdd(p, [["wm_pageid", a.ms_data_page_id], ["wm_prototypeid", a.ms_prototype_id], ["wm_sid", a.ms_data_shop_id], ["spm-url", m], ["spm-pre", n.spm_pre], ["spm-cnt", n.spm_cnt], ["cnaui", f.cnaui]]), p
            }, getExParams: function () {
                return []
            }, getExtra: function () {
                return []
            }, getClientInfo: function (t) {
                var e = [], n = r.getGoldlogVal("_$") || {}, s = this.client_info || {}, c = s.ua_info || {};
                if (t || !i.is_WindVane && !i.isAplusChnl()) {
                    for (var l, p = [], g = ["p", "o", "b", "s", "w", "wx", "ism"], f = 0; l = g[f++];) c[l] && p.push([l, c[l]]);
                    o.ifAdd(e, p)
                }
                o.ifAdd(e, [["cache", a.makeCacheNum()], ["lver", goldlog.lver || u.lver], ["jsver", n.script_name || u.script_name], ["pver", goldlog.aplus_cplugin_ver]]);
                var d = this.options.config || {}, _ = d.is_auto;
                return _ || o.ifAdd(e, [["mansndlog", 1]]), e
            }, processLodashDollar: function () {
                var t = r.getGoldlogVal("_$") || {};
                t.page_url !== location.href && (t.page_referrer = t.page_url, t.page_url = location.href), r.setGoldlogVal("_$", t)
            }, getLsParams: function () {
                var t = r.getGoldlogVal("_$") || {}, e = [];
                return t.lsparams && t.lsparams.spm_id && (e.push(["lsparams", t.lsparams.spm_id]), e.push(["lsparams_pre", t.lsparams.current_url])), e
            }, run: function () {
                var t = this.getBasicParams() || [], e = this.getExParams() || [], n = this.getExtra() || [];
                this.processLodashDollar();
                var o = this.getLsParams() || [], a = [].concat(t, e, n, o);
                this.options.context.what_to_sendpv.pvdata = a, this.options.context.what_to_sendpv.exparams = e
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(17), a = n(26), r = n(45), i = n(11), s = n(49);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, getPageId: function () {
                    var t = this.options.config || {}, e = this.options.context || {}, n = e.userdata || {};
                    return t.page_id || t.pageid || t.pageId || n.page_id
                }, getPageInfo: function () {
                    var t;
                    try {
                        var e = top.location !== self.location;
                        e && void 0 !== window.innerWidth && (t = {
                            width: window.innerWidth,
                            height: window.innerHeight
                        })
                    } catch (t) {
                    }
                    return t
                }, getUserdata: function () {
                    var t = a.getGoldlogVal("_$") || {}, e = t.spm || {}, n = this.options.context || {},
                        r = n.userdata || {}, u = this.options.config || {}, c = [];
                    if (u && !u.is_auto) {
                        u.gokey && c.push([o.mkPlainKey(), u.gokey]);
                        var l = e.data.b;
                        if (l) {
                            var p = this.getPageId();
                            l = p ? l.split("/")[0] + "/" + p : l.split("/")[0], s.setB(l);
                            var g = e.spm_cnt.split(".");
                            g && g.length > 2 && (g[1] = l, e.spm_cnt = g.join("."))
                        }
                    }
                    var f = function (t) {
                        if ("object" == typeof t) for (var e in t) "object" != typeof t[e] && "function" != typeof t[e] && c.push([e, t[e]])
                    };
                    f(goldlog.getMetaInfo("aplus-cpvdata")), f(r);
                    var d = i.getCookie("workno") || i.getCookie("emplId");
                    d && c.push(["workno", d]);
                    var _ = i.getHng();
                    _ && c.push(["_hng", i.getHng()]);
                    var h = this.getPageInfo();
                    return h && (c.push(["_pw", h.width]), c.push(["_ph", h.height])), c
                }, processLodashDollar: function () {
                    var t = this.options.config || {}, e = a.getGoldlogVal("_$") || {};
                    t && t.referrer && (e.page_referrer = t.referrer), a.setGoldlogVal("_$", e)
                }, updatePre: function (t) {
                    var e = a.getGoldlogVal("_$") || {};
                    return e.page_referrer && r.updateKey(t, "pre", e.page_referrer), t
                }, run: function () {
                    var t = this.options.context.what_to_sendpv.pvdata, e = this.getUserdata();
                    this.processLodashDollar();
                    var n = t, o = this.options.context.what_to_pvhash.hash;
                    o && o.length > 0 && n.push(o), n = n.concat(e), n = this.updatePre(n);
                    var a = this.getPageId();
                    a && r.updateSPMCnt(n, a), this.options.context.what_to_sendpv.pvdata = n, this.options.context.userdata = e
                }
            }
        }
    }, function (t, e, n) {
        "use strict";

        function o() {
            if (!s.data.a || !s.data.b) {
                var t = r._SPM_a, e = r._SPM_b;
                if (t && e) return t = t.replace(/^{(\w+\/)}$/g, "$1"), e = e.replace(/^{(\w+\/)}$/g, "$1"), s.is_wh_in_page = !0, void c.setAB(t, e);
                var n = goldlog._$.meta_info;
                t = n["data-spm"] || n["spm-id"] || "0";
                var o = t.split(".");
                o.length > 1 && (t = o[0], e = o[1]), c.setA(t), e && c.setB(e);
                var a = i.getElementsByTagName("body");
                a = a && a.length ? a[0] : null, a && (e = l.tryToGetAttribute(a, "data-spm"), e ? c.setB(e) : 1 === o.length && c.setAB("0", "0"))
            }
        }

        function a() {
            var t = s.data.a, e = s.data.b;
            t && e && (goldlog.spm_ab = [t, e])
        }

        var r = window, i = document, s = {}, u = {};
        s.data = u;
        var c = {}, l = n(28), p = n(50), g = location.href, f = n(51).getRefer(), d = n(4);
        c.setA = function (t) {
            s.data.a = t, a()
        }, c.setB = function (t) {
            s.data.b = t, a()
        }, c.setAB = function (t, e) {
            s.data.a = t, s.data.b = e, a()
        };
        var _ = p.getSPMFromUrl, h = function () {
            var t = d.utilPvid.makePVId();
            return d.mustSpmE ? t || goldlog.pvid || "" : t || ""
        }, m = function (t, e) {
            var n = t.goldlog || window.goldlog || {}, a = n.meta_info || {};
            s.meta_protocol = a.spm_protocol;
            var r, i = n.spm_ab || [], u = i[0] || "0", c = i[1] || "0";
            "0" === u && "0" === c && (o(), u = s.data.a || "0", c = s.data.b || "0"), r = [s.data.a, s.data.b].join("."), s.spm_cnt = (r || "0.0") + ".0.0";
            var l = t.send_pv_count > 0 ? h() : n.pvid;
            l && (s.spm_cnt += "." + l), n._$.spm = s, "function" == typeof e && e(l)
        };
        c.spaInit = function (t, e, n, o) {
            var a = "function" == typeof o ? o : function () {
            }, r = s.spm_url, i = window.g_SPM || {}, u = t._$ || {}, c = u.send_pv_count;
            m({goldlog: t, meta_info: e, send_pv_count: c}, function (t) {
                s.spm_cnt = s.data.a + "." + s.data.b + ".0.0" + (t ? "." + t : "");
                var o = e["aplus-spm-fixed"];
                if ("1" !== o) {
                    s.spm_pre = _(f), s.origin_spm_pre = s.spm_pre, s.spm_url = _(location.href), s.origin_spm_url = s.spm_url;
                    var u = i._current_spm || {};
                    u && u.a && "0" !== u.a && u.b && "0" !== u.b ? (s.spm_url = [u.a, u.b, u.c, u.d, u.e].join("."), s.spm_pre = r) : c > 0 && n && "0" !== n[0] && "0" !== n[1] && (s.spm_url = n.concat(["0", "0"]).join("."), s.spm_pre = r), i._current_spm = {}
                }
                a()
            })
        }, c.init = function (t, e, n) {
            s.spm_url = _(g), s.spm_pre = _(f), m({goldlog: t, meta_info: e}, function () {
                "function" == typeof n && n()
            })
        }, c.resetSpmCntPvid = function () {
            var t = goldlog.spm_ab;
            if (t && 2 === t.length) {
                var e = t.join(".") + ".0.0", n = h();
                n && (e = e + "." + n), s.spm_cnt = e, s.spm_url = e, goldlog._$.spm = s
            }
        }, t.exports = c
    }, function (t, e) {
        "use strict";

        function n(t, e) {
            if (!t || !e) return "";
            var n, o = "";
            try {
                var a = new RegExp("[?|&]+" + t + "=([^&|#|?|/]+)");
                if ("spm" === t || "scm" === t) {
                    var r = new RegExp("\\?.*" + t + "=([\\w\\.\\-\\*/]+)"), i = e.match(a), s = e.match(r),
                        u = i && 2 === i.length ? i[1] : "", c = s && 2 === s.length ? s[1] : "";
                    o = u > c ? u : c, o = decodeURIComponent(o)
                } else n = e.match(a), o = n && 2 === n.length ? n[1] : ""
            } catch (t) {
            } finally {
                return o
            }
        }

        e.getParamFromUrl = n, e.getSPMFromUrl = function (t) {
            return n("spm", t)
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(52).nameStorage, a = n(5);
        e.getRefer = function () {
            var t = a.KEY || {}, e = t.NAME_STORAGE || {};
            return document.referrer || o.getItem(e.REFERRER) || ""
        }
    }, function (t, e) {
        "use strict";
        var n = function () {
            function t() {
                var t, e = [], r = !0;
                for (var l in p) p.hasOwnProperty(l) && (r = !1, t = p[l] || "", e.push(c(l) + s + c(t)));
                n.name = r ? o : a + c(o) + i + e.join(u)
            }

            function e(t, e, n) {
                t && (t.addEventListener ? t.addEventListener(e, n, !1) : t.attachEvent && t.attachEvent("on" + e, function (e) {
                    n.call(t, e)
                }))
            }

            var n = window;
            if (n.nameStorage) return n.nameStorage;
            var o, a = "nameStorage:", r = /^([^=]+)(?:=(.*))?$/, i = "?", s = "=", u = "&", c = encodeURIComponent,
                l = decodeURIComponent, p = {}, g = {};
            return function (t) {
                if (t && 0 === t.indexOf(a)) {
                    var e = t.split(/[:?]/);
                    e.shift(), o = l(e.shift()) || "";
                    for (var n, i, s, c = e.join(""), g = c.split(u), f = 0, d = g.length; f < d; f++) n = g[f].match(r), n && n[1] && (i = l(n[1]), s = l(n[2]) || "", p[i] = s)
                } else o = t || ""
            }(n.name), g.setItem = function (e, n) {
                e && "undefined" != typeof n && (p[e] = String(n), t())
            }, g.getItem = function (t) {
                return p.hasOwnProperty(t) ? p[t] : null
            }, g.removeItem = function (e) {
                p.hasOwnProperty(e) && (p[e] = null, delete p[e], t())
            }, g.clear = function () {
                p = {}, t()
            }, g.valueOf = function () {
                return p
            }, g.toString = function () {
                var t = n.name;
                return 0 === t.indexOf(a) ? t : a + t
            }, e(n, "beforeunload", function () {
                t()
            }), g
        }();
        e.nameStorage = n
    }, function (t, e, n) {
        "use strict";
        var o = n(45);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, updateBasicParams: function () {
                    var t = this.options.context.what_to_sendpv.pvdata || [], e = this.options.context.etag || {};
                    return e.cna && (o.updateKey(t, "cna", e.cna), this.options.context.what_to_sendpv.pvdata = t), t
                }, addTagParams: function () {
                    var t = this.options.context.what_to_sendpv.pvdata || [], e = this.options.context.etag || {},
                        n = [];
                    (e.tag || 0 === e.tag) && n.push(["tag", e.tag]), (e.stag || 0 === e.stag) && n.push(["stag", e.stag]), (e.lstag || 0 === e.lstag) && n.push(["lstag", e.lstag]), n.length > 0 && (this.options.context.what_to_sendpv.pvdata = t.concat(n))
                }, run: function () {
                    this.updateBasicParams(), this.addTagParams()
                }
            }
        }
    }, function (t, e, n) {
        "use strict";

        function o(t) {
            var e, n, o, a, r = [], s = {};
            for (e = t.length - 1; e >= 0; e--) n = t[e], o = n[0], o && o.indexOf(i.s_plain_obj) == -1 && s.hasOwnProperty(o) || (a = n[1], ("aplus" == o || a) && (r.unshift([o, a]), s[o] = 1));
            return r
        }

        function a(t) {
            var e, n, o, a, r = [], u = {logtype: !0, cache: !0, scr: !0, "spm-cnt": !0};
            for (e = t.length - 1; e >= 0; e--) if (n = t[e], o = n[0], a = n[1], !(s.isStartWith(o, i.s_plain_obj) && !s.isStartWith(o, i.mkPlainKeyForExparams()) || u[o])) if (s.isStartWith(o, i.mkPlainKeyForExparams())) {
                var c = i.param2arr(a);
                if ("object" == typeof c && c.length > 0) for (var l = c.length - 1; l >= 0; l--) {
                    var p = c[l];
                    p && p[1] && r.unshift([p[0], p[1]])
                }
            } else r.unshift([o, a]);
            return r
        }

        function r() {
            var t = {isonepage: "-1", urlpagename: ""}, e = g.qGet();
            if (e && e.hasOwnProperty("isonepage_data")) t.isonepage = e.isonepage_data.isonepage, t.urlpagename = e.isonepage_data.urlpagename; else {
                var n = c.getMetaCnt("isonepage") || "-1", o = n.split("|");
                t.isonepage = o[0], t.urlpagename = o[1] ? o[1] : ""
            }
            return t
        }

        var i = n(17), s = n(9), u = n(26), c = n(29), l = n(50), p = n(55), g = n(27), f = n(4), d = n(11);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, keyIsAvailable: function (t) {
                    var e = ["functype", "funcId", "spm-cnt", "spm-url", "spm-pre", "_ish5", "_is_g2u", "_h5url", "cna", "isonepage", "lver", "jsver"];
                    return i.indexof(e, t) === -1
                }, valIsAvailable: function (t) {
                    return "object" != typeof t && "function" != typeof t
                }, upUtData: function (t, e) {
                    var n = this;
                    if (t = t ? t : {}, e && "object" == typeof e) for (var o in e) {
                        var a = e[o];
                        o && n.valIsAvailable(a) && n.keyIsAvailable(o) && (t[o] = a)
                    }
                    return t
                }, getToUtData: function (t) {
                    var e = u.getGoldlogVal("_$") || {}, n = e.spm || {}, s = this.options.context || {},
                        c = !!s.is_single, p = s.what_to_sendpv || {}, g = a(o(p.exparams || []));
                    g = i.arr2obj(g);
                    var _ = i.arr2obj(p.pvdata), h = a(o(s.userdata || []));
                    h = i.arr2obj(h);
                    var m = location.href, v = {}, b = l.getParamFromUrl("scm", m) || "";
                    b && (v.scm = b);
                    var y = l.getParamFromUrl("pg1stepk", m) || "";
                    y && (v.pg1stepk = y);
                    var w = l.getParamFromUrl("point", m) || "";
                    w && (v.issb = 1), _ && _.mansndlog && (v.mansndlog = _.mansndlog), v = this.upUtData(v, g), v = this.upUtData(v, h);
                    var x = r();
                    v.functype = "page", v.funcId = "2001", v.url = goldlog.getMetaInfo("aplus-pagename") || location.origin + location.pathname, v._ish5 = "1", v._h5url = m, v._toUT = 2, v._bridgeName = t.bridgeName || "", v._bridgeVersion = t.bridgeVersion || "", v["spm-cnt"] = n.spm_cnt || "", v["spm-url"] = n.spm_url || "", v["spm-pre"] = n.spm_pre || "", v.cna = d.getCookie("cna"), v.lver = goldlog.lver || f.lver, v.jsver = f.script_name, v.pver = goldlog.aplus_cplugin_ver, v.isonepage = x.isonepage;
                    var j = goldlog.getMetaInfo("aplus-utparam");
                    return j && (v["utparam-cnt"] = JSON.stringify(j)), v._is_g2u_ = c ? 1 : 2, v
                }, run: function () {
                    var t = this.options.context || {}, e = t.what_to_sendpv_ut2 || {}, n = t.where_to_sendlog_ut || {},
                        o = n.aplusToUT || {}, a = o.toUT2 || {};
                    (a && a.isAvailable && "function" == typeof a.toUT2 || p.haveNativeFlagInUA()) && (e.pvdataToUt = this.getToUtData(a), this.options.context.what_to_sendpv_ut2 = e)
                }
            }
        }
    }, function (t, e) {
        "use strict";
        var n = "UT4Aplus", o = "Umeng4Aplus";
        e.isNative4Aplus = function () {
            var t = goldlog.getMetaInfo("aplus-toUT"), e = goldlog.aplusBridgeName;
            return e === n && t === n || e === o
        }, e.haveNativeFlagInUA = function () {
            var t = goldlog.aplusBridgeName;
            if (!t && "boolean" != typeof t) {
                var e = new RegExp([n, o].join("|"), "i"), a = navigator.userAgent.match(e);
                t = !!a && a[0], goldlog.aplusBridgeName = t
            }
            return !!t
        }
    }, function (t, e, n) {
        "use strict";

        function o(t) {
            var e, n, o, a, i = [], s = {};
            for (e = t.length - 1; e >= 0; e--) n = t[e], o = n[0], o && o.indexOf(r.s_plain_obj) == -1 && s.hasOwnProperty(o) || (a = n[1], ("aplus" == o || a) && (i.unshift([o, a]), s[o] = 1));
            return i
        }

        function a(t) {
            var e, n, o, a, s = [], u = {logtype: !0, cache: !0, scr: !0, "spm-cnt": !0};
            for (e = t.length - 1; e >= 0; e--) if (n = t[e], o = n[0], a = n[1], !(i.isStartWith(o, r.s_plain_obj) && !i.isStartWith(o, r.mkPlainKeyForExparams()) || u[o])) if (i.isStartWith(o, r.mkPlainKeyForExparams())) {
                var c = r.param2arr(a);
                if ("object" == typeof c && c.length > 0) for (var l = c.length - 1; l >= 0; l--) {
                    var p = c[l];
                    p && p[1] && s.unshift([p[0], p[1]])
                }
            } else s.unshift([o, a]);
            return s
        }

        var r = n(17), i = n(9), s = n(26), u = n(29), c = n(55), l = n(27), p = n(4), g = n(11);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, getToUtData: function (t, e) {
                    var n, i = s.getGoldlogVal("_$") || {}, c = i.spm || {}, f = a(o(t)), d = {};
                    try {
                        var _ = r.arr2obj(f);
                        _._toUT = 1, _._bridgeName = e.bridgeName || "", _._bridgeVersion = e.bridgeVersion || "", n = JSON.stringify(_)
                    } catch (t) {
                        n = '{"_toUT":1}'
                    }
                    var h = u.getOnePageInfo(l);
                    d.functype = "2001", d.urlpagename = h.urlpagename, d.url = location.href, d.spmcnt = c.spm_cnt || "", d.spmurl = c.spm_url || "", d.spmpre = c.spm_pre || "", d.lzsid = "", d.cna = g.getCookie("cna"), d.extendargs = n, d.isonepage = h.isonepage;
                    var m = this.options.context || {}, v = !!m.is_single;
                    return d._is_g2u_ = v ? 1 : 2, d.version = p.toUtVersion, d.lver = goldlog.lver || p.lver, d.jsver = p.script_name, d
                }, run: function () {
                    var t = this.options.context || {}, e = t.what_to_sendpv || {}, n = e.pvdata || [],
                        o = t.what_to_sendpv_ut || {}, a = t.where_to_sendlog_ut || {}, r = a.aplusToUT || {},
                        i = r.toUT || {};
                    (i && i.isAvailable && "function" == typeof i.toUT2 || c.haveNativeFlagInUA()) && (o.pvdataToUt = this.getToUtData(n, i), this.options.context.what_to_sendpv_ut = o)
                }
            }
        }
    }, function (t, e) {
        "use strict";
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, run: function () {
                    var t = this.options.context || {}, e = t.is_single ? "1" : "0";
                    if (t.what_to_sendpv_ut2.pvdataToUt._slog = e, t.what_to_sendpv_ut.pvdataToUt._slog = e, t.what_to_sendpv.pvdata.push(["_slog", e]), t.ut_is_available) {
                        var n = t.is_single ? "1" : "2";
                        t.what_to_sendpv.pvdata.push(["_is_g2u", n])
                    }
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(26);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, run: function () {
                    var t = o.getGoldlogVal("_$") || {}, e = this.options.context.can_to_sendpv || {},
                        n = t.send_pv_count || 0, a = this.options.config || {};
                    return a.is_auto && n > 0 ? "done" : (e.flag = "YES", this.options.context.can_to_sendpv = e, t.send_pv_count = ++n, void o.setGoldlogVal("_$", t))
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(55);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, run: function (t, e) {
                    var n = this, a = this.options.context || {}, r = a.what_to_sendpv_ut2 || {},
                        i = a.where_to_sendlog_ut || {}, s = r.pvdataToUt || {}, u = i.aplusToUT || {}, c = u.toUT2;
                    if (o.isNative4Aplus()) return u.toutflag = "toUT2", void (n.options.context.what_to_sendpv_ut2.isSuccess = !0);
                    if (c && "function" == typeof c.toUT2 && c.isAvailable) try {
                        u.toutflag = "toUT2", c.toUT2(s, function () {
                            n.options.context.what_to_sendpv_ut2.isSuccess = !0, e("done")
                        }, function (t) {
                            n.options.context.what_to_sendpv_ut2.errorMsg = t, e()
                        }, 2e3)
                    } catch (t) {
                        e()
                    } finally {
                        return "pause"
                    }
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(3);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, run: function (t, e) {
                    var n = this, a = this.options.context || {}, r = a.what_to_sendpv_ut || {},
                        i = a.what_to_sendpv_ut2 || {}, s = a.where_to_sendlog_ut || {}, u = r.pvdataToUt || {},
                        c = s.aplusToUT || {}, l = c.toUT;
                    if (!i.isSuccess && l && "function" == typeof l.toUT2 && l.isAvailable) try {
                        l.toUT2(u, function () {
                            c.toutflag = "toUT", n.options.context.what_to_sendpv_ut.isSuccess = !0, e()
                        }, function (t) {
                            o.do_tracker_jserror({
                                message: "do_sendpv_ut error",
                                error: JSON.stringify(t),
                                filename: "do_sendpv_ut"
                            }), e()
                        }, 5e3)
                    } catch (t) {
                        e()
                    } finally {
                        return "pause"
                    }
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(26), a = n(17);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, run: function () {
                    var t = this.options.context || {}, e = t.what_to_sendpv_ut || {}, n = t.what_to_sendpv_ut2 || {},
                        r = !!t.is_single;
                    if (!r || !e.isSuccess && !n.isSuccess) {
                        var i = t.what_to_sendpv || {}, s = t.where_to_sendpv || {}, u = i.pvdata || [],
                            c = goldlog.send(s.url, a.arr2obj(u));
                        o.setGoldlogVal("req", c)
                    }
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(38), a = n(26);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, run: function () {
                    var t = goldlog._$ || {}, e = this.options.context || {};
                    a.setGoldlogVal("pv_context", e);
                    var n = goldlog.spm_ab || [], r = n.join("."), i = t.send_pv_count,
                        s = {cna: e.etag.cna, count: i, spmab_pre: goldlog.spmab_pre};
                    o.doPubMsg(["sendPV", "complete", r, s]), o.doCachePubs(["sendPV", "complete", r, s])
                }
            }
        }
    }, function (t, e) {
        "use strict";
        e.plugins_prepv = []
    }, function (t, e, n) {
        "use strict";

        function o() {
            return {
                where_to_hjlj: {
                    url: "//gj.mmstat.com/",
                    ac_atpanel: "//gj.mmstat.com/",
                    tblogUrl: "//gj.mmstat.com/"
                }
            }
        }

        function a() {
            return r.assign(new i, new o)
        }

        var r = n(9), i = n(65);
        t.exports = a
    }, function (t, e, n) {
        "use strict";

        function o() {
            return {
                compose: {},
                basic_params: {cna: a.getCookie("cna")},
                where_to_hjlj: {url: "//gm.mmstat.com/", ac_atpanel: "//ac.mmstat.com/", tblogUrl: "//log.mmstat.com/"},
                userdata: {},
                what_to_hjlj: {logdata: {}},
                what_to_pvhash: {hash: []},
                what_to_hjlj_exinfo: {
                    EXPARAMS_FLAG: "EXPARAMS",
                    exinfo: [],
                    exparams_key_names: ["uidaplus", "pc_i", "pu_i"]
                },
                what_to_hjlj_ut: {logdataToUT: {}},
                what_to_hjlj_ut2: {isSuccess: !1, logdataToUT: {}},
                where_to_sendlog_ut: {aplusToUT: {}, toUTName: "toUT"},
                network: {connType: "UNKNOWN"},
                is_single: !1
            }
        }

        var a = n(11);
        t.exports = o
    }, function (t, e, n) {
        "use strict";
        e.plugins_hjlj = [{name: "etag", enable: !0, path: n(37)}, {
            name: "where_to_sendlog_ut",
            enable: !0,
            path: n(40)
        }, {name: "is_single", enable: !0, path: n(42)}, {
            name: "what_to_hjlj_exinfo",
            enable: !0,
            path: n(67)
        }, {name: "what_to_pvhash", enable: !0, path: n(43)}, {
            name: "what_to_hjlj",
            enable: !0,
            path: n(68),
            deps: ["what_to_hjlj_exinfo", "what_to_pvhash"]
        }, {
            name: "what_to_hjlj_ut2",
            enable: !0,
            path: n(69),
            deps: ["is_single", "what_to_hjlj_exinfo"]
        }, {
            name: "what_to_hjlj_ut",
            enable: !0,
            path: n(72),
            deps: ["is_single", "what_to_hjlj_exinfo"]
        }, {
            name: "what_to_hjlj_slog",
            enable: !0,
            path: n(73),
            deps: ["what_to_hjlj", "what_to_hjlj_ut2", "what_to_hjlj_ut"]
        }, {
            name: "where_to_hjlj",
            enable: !0,
            path: n(74),
            deps: ["is_single", "what_to_hjlj"]
        }, {
            name: "do_sendhjlj_ut2",
            enable: !0,
            path: n(75),
            deps: ["what_to_hjlj", "what_to_hjlj_ut2", "where_to_sendlog_ut"]
        }, {
            name: "do_sendhjlj_ut",
            enable: !0,
            path: n(76),
            deps: ["what_to_hjlj", "what_to_hjlj_ut", "where_to_sendlog_ut", "do_sendhjlj_ut2"]
        }, {
            name: "do_sendhjlj",
            enable: !0,
            path: n(77),
            deps: ["is_single", "what_to_hjlj", "where_to_hjlj", "do_sendhjlj_ut"]
        }]
    }, function (t, e, n) {
        "use strict";
        var o = n(17), a = n(31), r = n(26), i = n(26), s = n(24), u = n(11);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, getCookieUserInfo: function () {
                    var t = [], e = u.getCookie("workno") || u.getCookie("emplId");
                    e && t.push("workno=" + e);
                    var n = u.getHng();
                    return n && t.push("_hng=" + u.getHng()), t
                }, filterExinfo: function (t) {
                    var e = "";
                    try {
                        t && ("string" == typeof t ? e = t.replace(/&amp;/g, "&").replace(/\buser(i|I)d=/, "uidaplus=").replace(/&aplus&/, "&") : "object" == typeof t && (e = o.obj2param(t, !0)))
                    } catch (t) {
                        e = t.message ? t.message : ""
                    }
                    return e
                }, getExparamsFlag: function () {
                    var t = this.options.context || {}, e = t.what_to_hjlj_exinfo || {};
                    return e.EXPARAMS_FLAG || "EXPARAMS"
                }, getCustomExParams: function (t) {
                    var e = "";
                    return t !== this.getExparamsFlag() && (e = this.filterExinfo(t) || ""), e ? e.split("&") : []
                }, getBeaconExparams: function (t, e) {
                    var n = [], r = a.getExParams(o) || "";
                    r = r.replace(/&aplus&/, "&");
                    for (var i = o.param2arr(r) || [], u = function (e) {
                        return s.indexof(t, e) > -1
                    }, c = 0; c < i.length; c++) {
                        var l = i[c], p = l[0] || "", g = l[1] || "";
                        p && g && (e === this.getExparamsFlag() || u(p)) && n.push(p + "=" + g)
                    }
                    return n
                }, getExinfo: function (t) {
                    var e = this.options.context || {}, n = e.what_to_hjlj_exinfo || {}, o = n.exparams_key_names || [],
                        a = this.getBeaconExparams(o, t);
                    return a
                }, getExData: function (t) {
                    var e = [];
                    if ("object" == typeof t) for (var n in t) {
                        var o = t[n];
                        n && o && "object" != typeof o && "function" != typeof o && e.push(n + "=" + o)
                    }
                    return e
                }, doConcatArr: function (t, e) {
                    return e && e.length > 0 && (t = t.concat(e)), t
                }, run: function () {
                    try {
                        var t = this.options.context.what_to_hjlj_exinfo || {}, e = r.getGoldlogVal("_$") || {},
                            n = e.meta_info || {}, o = n["aplus-exinfo"] || "", a = n["aplus-exdata"] || "", s = [];
                        s = this.doConcatArr(s, t.exinfo || []), s = this.doConcatArr(s, this.getExinfo(o)), s = this.doConcatArr(s, this.getCookieUserInfo()), s = this.doConcatArr(s, this.getCustomExParams(o)), s = this.doConcatArr(s, this.getExData(a)), t.exinfo = s.join("&"), this.options.context.what_to_hjlj_exinfo = t
                    } catch (t) {
                        i.logger({msg: t ? t.message : ""})
                    }
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(31), a = n(17), r = n(11), i = n(9), s = n(4);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, getParams: function () {
                    var t = this.options.context || {}, e = t.userdata || {}, n = t.basic_params || {},
                        u = t.what_to_hjlj_exinfo || {}, c = u.exinfo || "", l = t.etag || {},
                        p = l.cna || n.cna || r.getCookie("cna"), g = e.gmkey, f = "";
                    e.gokey && c ? f = [e.gokey, c].join("&") : e.gokey ? f = e.gokey : c && (f = c);
                    var d = t.what_to_pvhash || {}, _ = d.hash || [];
                    _.length && (f += "&" + _.join("=")), f += "&jsver=" + s.script_name, f += "&lver=" + s.lver, f += "&pver=" + goldlog.aplus_cplugin_ver, f += "&cache=" + i.makeCacheNum(), f += "&page_cna=" + p;
                    var h = {gmkey: g || "", gokey: f, cna: p}, m = goldlog.getMetaInfo("aplus-p-url-init");
                    m && (h._p_url = goldlog.getMetaInfo("aplus-p-url") || m), e["spm-cnt"] && (h["spm-cnt"] = e["spm-cnt"]), e["spm-pre"] && (h["spm-pre"] = e["spm-pre"]);
                    try {
                        var v = o.getExParams(a), b = a.param2obj(v).uidaplus;
                        b && (h._gr_uid_ = b)
                    } catch (t) {
                    }
                    return h
                }, run: function () {
                    this.options.context.what_to_hjlj.logdata = this.getParams()
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(70), a = n(26), r = n(4);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, getToUtData: function (t, e) {
                    var n = a.getGoldlogVal("_$") || {}, i = n.spm || {}, s = this.options.context.userdata || {},
                        u = this.options.context.basic_params || {}, c = this.options.context || {},
                        l = c.what_to_hjlj_exinfo || {}, p = l.exinfo || "", g = "";
                    s.gokey && p ? g = [s.gokey, p].join("&") : s.gokey ? g = s.gokey : p && (g = p);
                    var f = {};
                    f.functype = "ctrl", f.funcId = o.getFunctypeValue2({
                        logkey: s.logkey,
                        gmkey: s.gmkey,
                        spm_ab: a.getGoldlogVal("spm_ab")
                    }), f.url = goldlog.getMetaInfo("aplus-pagename") || location.origin + location.pathname, f.logkey = s.logkey, f.gokey = encodeURIComponent(g), f.gmkey = s.gmkey, f._ish5 = "1", f._h5url = location.href, f._is_g2u_ = t ? 1 : 2, f._toUT = 2, f._bridgeName = e.bridgeName || "", f._bridgeVersion = e.bridgeVersion || "", f["spm-cnt"] = i.spm_cnt || "", f["spm-url"] = i.spm_url || "", f["spm-pre"] = i.spm_pre || "", f.cna = u.cna, f.lver = r.lver, f.jsver = r.script_name, s.hasOwnProperty("autosend") && (f.autosend = s.autosend);
                    var d = goldlog.getMetaInfo("aplus-utparam");
                    return d && (f["utparam-cnt"] = JSON.stringify(d)), f
                }, run: function () {
                    var t = this.options.context || {}, e = t.what_to_hjlj_ut2 || {}, n = !!t.is_single,
                        o = t.where_to_sendlog_ut || {}, a = o.aplusToUT || {}, r = a.toUT2 || {};
                    e.logdataToUT = this.getToUtData(n, r), this.options.context.what_to_hjlj_ut2 = e
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(71), a = n(55), r = function (t) {
            var e = t.logkey.toLowerCase();
            0 === e.indexOf("/") && (e = e.substr(1));
            var n = t.gmkey ? t.gmkey.toUpperCase() : "OTHER";
            switch (n) {
                case"EXP":
                    return "2201";
                case"CLK":
                    return "2101";
                case"SLD":
                    return "19999";
                case"OTHER":
                default:
                    return "19999"
            }
        }, i = /\sA2U\/x/.test(window.navigator.userAgent), s = function () {
            return i || a.haveNativeFlagInUA() || o.webviewIsAbove({
                version_ios_tb: [5, 11, 7],
                version_ios_tm: [5, 24, 1],
                version_android_tb: [5, 11, 7],
                version_android_tm: [5, 24, 1]
            })
        };
        e.isSingleUaVersion = s, e.isSingleSendLog = function (t) {
            return (!t || !/^\/fsp\.1\.1$/.test(t.logkey)) && !!(t && t.logkey && s())
        }, e.getFunctypeValue = function (t) {
            return e.isSingleSendLog(t) ? r(t) : "2101"
        }, e.getFunctypeValue2 = function (t) {
            return r(t)
        }
    }, function (t, e) {
        "use strict";
        var n = function (t) {
            var e = [0, 0, 0];
            try {
                if (t) {
                    var n = t[1], o = n.split(".");
                    if (o.length > 2) for (var a = 0; a < o.length;) e[a] = parseInt(o[a]), a++
                }
            } catch (t) {
                e = [0, 0, 0]
            } finally {
                return e
            }
        };
        e.parseVersion = n;
        var o = function (t, e) {
            var n = !1;
            try {
                var o = t[0] > e[0], a = t[1] > e[1], r = t[2] > e[2], i = t[0] === e[0], s = t[1] === e[1],
                    u = t[2] === e[2];
                n = !!o || (!(!i || !a) || (!!(i && s && r) || !!(i && s && u)))
            } catch (t) {
                n = !1
            } finally {
                return n
            }
        };
        e.isAboveVersion = o, e.webviewIsAbove = function (t, e) {
            var a = !1;
            try {
                e || (e = navigator.userAgent);
                var r = e.match(/AliApp\(TB\/(\d+[._]\d+[._]\d+)/i), i = n(r),
                    s = e.match(/AliApp\(TM\/(\d+[._]\d+[._]\d+)/i), u = n(s), c = /iPhone|iPad|iPod|ios/i.test(e),
                    l = /android/i.test(e);
                c ? r && i ? a = o(i, t.version_ios_tb) : s && u && (a = o(u, t.version_ios_tm)) : l && (r && i ? a = o(i, t.version_android_tb) : s && u && (a = o(u, t.version_android_tm)))
            } catch (t) {
                a = !1
            }
            return a
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(70), a = n(11), r = n(26), i = n(4);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, getToUtData: function (t, e) {
                    var n = r.getGoldlogVal("_$") || {}, s = n.spm || {}, u = this.options.context || {},
                        c = u.userdata || {}, l = u.what_to_hjlj_exinfo || {}, p = l.exinfo || "", g = "";
                    c.gokey && p ? g = [c.gokey, p].join("&") : c.gokey ? g = c.gokey : p && (g = p);
                    var f = {
                        gmkey: c.gmkey,
                        gokey: g,
                        lver: i.lver,
                        jsver: i.script_name,
                        version: i.toUtVersion,
                        spm_cnt: s.spm_cnt || "",
                        spm_url: s.spm_url || "",
                        spm_pre: s.spm_pre || ""
                    };
                    f._is_g2u_ = t ? 1 : 2, f._bridgeName = e.bridgeName || "", f.bridgeVersion = e.bridgeVersion || "", f._toUT = 1;
                    try {
                        f = JSON.stringify(f), "{}" == f && (f = "")
                    } catch (t) {
                        f = ""
                    }
                    var d = n.meta_info || {}, _ = d.isonepage_data || {}, h = {};
                    return h.functype = o.getFunctypeValue({
                        logkey: c.logkey,
                        gmkey: c.gmkey,
                        spm_ab: r.getGoldlogVal("spm_ab")
                    }), h.spmcnt = s.spm_cnt || "", h.spmurl = s.spm_url || "", h.spmpre = s.spm_pre || "", h.logkey = c.logkey, h.logkeyargs = f, h.urlpagename = _.urlpagename, h.url = location.href, h.cna = a.getCookie("cna") || "", h.extendargs = "", h.isonepage = _.isonepage, h
                }, run: function () {
                    var t = this.options.context || {}, e = !!t.is_single, n = t.what_to_hjlj_ut || {},
                        o = t.where_to_sendlog_ut || {}, a = o.aplusToUT || {}, r = a.toUT || {};
                    n.logdataToUT = this.getToUtData(e, r), this.options.context.what_to_hjlj_ut = n
                }
            }
        }
    }, function (t, e) {
        "use strict";
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, run: function () {
                    var t = this.options.context || {}, e = t.is_single ? "1" : "0";
                    t.what_to_hjlj_ut2.logdataToUT._slog = e, t.what_to_hjlj_ut.logdataToUT._slog = e;
                    var n = ["_slog=" + e];
                    if (t.ut_is_available) {
                        var o = t.is_single ? "1" : "2";
                        n.push("_is_g2u=" + o)
                    }
                    t.what_to_hjlj.logdata.gokey ? t.what_to_hjlj.logdata.gokey += "&" + n.join("&") : t.what_to_hjlj.logdata.gokey = n.join("&")
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(17), a = n(9), r = n(26), i = n(23), s = n(27);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, getMetaInfo: function () {
                    var t = r.getGoldlogVal("_$") || {}, e = t.meta_info || s.getInfo();
                    return e
                }, getAplusMetaByKey: function (t) {
                    var e = this.getMetaInfo() || {};
                    return e[t]
                }, cramUrl: function (t) {
                    var e = r.getGoldlogVal("_$") || {}, n = e.spm || {}, o = this.options.context.where_to_hjlj || {},
                        i = o.ac_atpanel, s = o.tblogUrl, u = this.options.context.what_to_hjlj || {},
                        c = this.options.context.userdata || {}, l = !0, p = c.logkey;
                    if (!p) return {url: t, logkey_available: !1};
                    if ("ac" == p) t = i + "1.gif"; else if (a.isStartWith(p, "ac-")) t = i + p.substr(3); else if (a.isStartWith(p, "/")) {
                        t += p.substr(1);
                        var g = u.logdata || {};
                        g["spm-cnt"] = n.spm_cnt, g.logtype = 2;
                        try {
                            u.logdata = g, this.options.context.what_to_hjlj = u
                        } catch (t) {
                        }
                    } else a.isEndWith(p, ".gif") ? t = s + p : l = !1;
                    return {url: t, logkey_available: l}
                }, can_to_sendhjlj: function (t) {
                    var e = this.options.context || {}, n = e.logger || function () {
                    }, o = this.options.context.userdata || {};
                    return !!t.logkey_available || (n({msg: "logkey: " + o.logkey + " is not legal!"}), !1)
                }, run: function () {
                    var t, e, n = this.options.context.where_to_hjlj.url, a = this.getAplusMetaByKey("aplus-rhost-g"),
                        r = a && o.hostValidity(a);
                    r && (t = /^\/\//.test(a) ? "" : "//", e = /\/$/.test(a) ? "" : "/", n = t + a + e), a && !r && i.logger({msg: "aplus-rhost-g: " + a + ' is invalid, suggestion: "xxx.mmstat.com"'});
                    var s = this.cramUrl(n);
                    return this.can_to_sendhjlj(s) ? void (this.options.context.where_to_hjlj.url = s.url) : "done"
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(55);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, run: function (t, e) {
                    var n = this, a = this.options.context || {}, r = a.logger || function () {
                        }, i = a.what_to_hjlj_ut2 || {}, s = a.where_to_sendlog_ut || {}, u = !!a.is_single,
                        c = i.logdataToUT || {}, l = s.aplusToUT || {}, p = l.toUT2;
                    if (o.isNative4Aplus()) return l.toutflag = "toUT2", void (n.options.context.what_to_hjlj_ut2.isSuccess = !0);
                    if (p && "function" == typeof p.toUT2 && p.isAvailable) try {
                        l.toutflag = "toUT2", p.toUT2(c, function () {
                            n.options.context.what_to_hjlj_ut2.isSuccess = !0, e()
                        }, function (t) {
                            n.options.context.what_to_hjlj_ut2.errorMsg = t, e()
                        }, 2e3)
                    } catch (t) {
                        u && r({msg: "warning: singleSendHjlj toUTName = toUT2 errorMsg:" + t.message})
                    } finally {
                        return "pause"
                    }
                }
            }
        }
    }, function (t, e) {
        "use strict";
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, run: function (t, e) {
                    var n = this, o = this.options.context || {}, a = o.what_to_hjlj_ut2.isSuccess,
                        r = o.logger || function () {
                        }, i = !!o.is_single, s = o.where_to_sendlog_ut || {}, u = o.what_to_hjlj_ut || {},
                        c = u.logdataToUT || {}, l = s.aplusToUT || {}, p = l.toUT;
                    if (!a && p && "function" == typeof p.toUT2 && p.isAvailable) try {
                        p.toUT2(c, function () {
                            l.toutflag = "toUT", n.options.context.what_to_hjlj_ut.isSuccess = !0, e()
                        }, function () {
                            e()
                        }, 5e3)
                    } catch (t) {
                        i && r({msg: "warning: singleSendHjlj toUTName = toUT errorMsg:" + t.message})
                    } finally {
                        return "pause"
                    }
                }
            }
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(26);
        t.exports = function () {
            return {
                init: function (t) {
                    this.options = t
                }, run: function () {
                    var t = this.options.context || {}, e = this.options.config || {}, n = t.what_to_hjlj_ut.isSuccess,
                        a = t.what_to_hjlj_ut2.isSuccess, r = !!t.is_single;
                    if (!r || !n && !a) {
                        var i = t.logger || {}, s = t.what_to_hjlj || {}, u = t.where_to_hjlj || {},
                            c = s.logdata || {}, l = u.url || "";
                        l || "function" != typeof i || i({msg: "warning: where_to_hjlj.url is null, goldlog.record failed!"});
                        var p = goldlog.getMetaInfo("aplus-channel");
                        if ("WS-ONLY" !== p) {
                            var g = goldlog.send(u.url, c, e.method || "GET");
                            o.setGoldlogVal("req", g)
                        }
                    }
                }
            }
        }
    }, function (t, e, n) {
        "use strict";

        function o() {
            var t, e, n = i.KEY || {}, o = n.NAME_STORAGE || {};
            if (!l && c) {
                var a = location.href,
                    u = c && (a.indexOf("login.taobao.com") >= 0 || a.indexOf("login.tmall.com") >= 0),
                    p = s.getRefer();
                u && p ? (t = p, e = r.getItem(o.REFERRER_PV_ID)) : (t = a, e = goldlog.pvid), r.setItem(o.REFERRER, t), r.setItem(o.REFERRER_PV_ID, e)
            }
        }

        var a = n(79), r = n(52).nameStorage, i = n(4), s = n(51), u = n(82), c = "https:" == location.protocol,
            l = parent !== self;
        e.run = function () {
            var t = "beforeunload";
            a.on(window, t, function () {
                o(), u(t)
            })
        }
    }, function (t, e, n) {
        "use strict";

        function o(t, e, n) {
            var o = goldlog._$ || {}, a = o.meta_info || {}, r = a.aplus_ctap || {}, i = a["aplus-touch"];
            if (r && "function" == typeof r.on) r.on(t, e); else {
                var u = "ontouchend" in document.createElement("div");
                !u || "tap" !== i && "tapSpm" !== n ? s(t, u ? "touchstart" : "mousedown", e) : c.on(t, e)
            }
        }

        function a(t) {
            try {
                p.documentElement.doScroll("left")
            } catch (e) {
                return void setTimeout(function () {
                    a(t)
                }, 1)
            }
            t()
        }

        function r(t) {
            var e = 0, n = function () {
                0 === e && t(), e++
            };
            "complete" === p.readyState && n();
            var o;
            if (p.addEventListener) o = function () {
                p.removeEventListener("DOMContentLoaded", o, !1), n()
            }, p.addEventListener("DOMContentLoaded", o, !1), window.addEventListener("load", n, !1); else if (p.attachEvent) {
                o = function () {
                    "complete" === p.readyState && (p.detachEvent("onreadystatechange", o), n())
                }, p.attachEvent("onreadystatechange", o), window.attachEvent("onload", n);
                var r = !1;
                try {
                    r = null === window.frameElement
                } catch (t) {
                }
                p.documentElement.doScroll && r && a(n)
            }
        }

        function i(t) {
            "complete" === p.readyState ? t() : s(l, "load", t)
        }

        function s() {
            var t = arguments;
            if (2 === t.length) "DOMReady" === t[0] && r(t[1]), "onload" === t[0] && i(t[1]); else if (3 === t.length) {
                var e = t[0], n = t[1], a = t[2];
                "tap" === n || "tapSpm" === n ? o(e, a, n) : e[_]((g ? "on" : "") + n, function (t) {
                    t = t || l.event;
                    var e = t.target || t.srcElement;
                    "function" == typeof a && a(t, e)
                }, !!u(n) && {passive: !0})
            }
        }

        var u = n(80), c = n(81), l = window, p = document, g = !!p.attachEvent, f = "attachEvent",
            d = "addEventListener", _ = g ? f : d;
        e.DOMReady = r, e.onload = i, e.on = s
    }, function (t, e) {
        var n;
        t.exports = function (t) {
            if ("boolean" == typeof n) return n;
            if (!/touch|mouse|scroll|wheel/i.test(t)) return !1;
            n = !1;
            try {
                var e = Object.defineProperty({}, "passive", {
                    get: function () {
                        n = !0
                    }
                });
                window.addEventListener("test", null, e)
            } catch (t) {
            }
            return n
        }
    }, function (t, e) {
        "use strict";

        function n(t, e) {
            return t + Math.floor(Math.random() * (e - t + 1))
        }

        function o(t, e, n) {
            var o = l.createEvent("HTMLEvents");
            if (o.initEvent(e, !0, !0), "object" == typeof n) for (var a in n) o[a] = n[a];
            t.dispatchEvent(o)
        }

        function a(t) {
            0 === Object.keys(g).length && (p.addEventListener(_, r, !1), p.addEventListener(d, i, !1), p.addEventListener(m, i, !1));
            for (var e = 0; e < t.changedTouches.length; e++) {
                var n = t.changedTouches[e], o = {};
                for (var a in n) o[a] = n[a];
                var s = {startTouch: o, startTime: Date.now(), status: h, element: t.srcElement || t.target};
                g[n.identifier] = s
            }
        }

        function r(t) {
            for (var e = 0; e < t.changedTouches.length; e++) {
                var n = t.changedTouches[e], o = g[n.identifier];
                if (!o) return;
                var a = n.clientX - o.startTouch.clientX, r = n.clientY - o.startTouch.clientY,
                    i = Math.sqrt(Math.pow(a, 2) + Math.pow(r, 2));
                (o.status === h || "pressing" === o.status) && i > 10 && (o.status = "panning")
            }
        }

        function i(t) {
            for (var e = 0; e < t.changedTouches.length; e++) {
                var n = t.changedTouches[e], a = n.identifier, s = g[a];
                s && (s.status === h && t.type === d && (s.timestamp = Date.now(), o(s.element, v, {
                    touch: n,
                    touchEvent: t
                })), delete g[a])
            }
            0 === Object.keys(g).length && (p.removeEventListener(_, r, !1), p.removeEventListener(d, i, !1), p.removeEventListener(m, i, !1))
        }

        function s(t) {
            t.__fixTouchEvent || (t.addEventListener(f, function () {
            }, !1), t.__fixTouchEvent = !0)
        }

        function u() {
            c || (p.addEventListener(f, a, !1), c = !0)
        }

        var c = !1, l = window.document, p = l.documentElement, g = {}, f = "touchstart", d = "touchend",
            _ = "touchmove", h = "tapping", m = "touchcancel", v = "aplus_tap" + n(1, 1e5);
        t.exports = {
            on: function (t, e) {
                u(), t && t.addEventListener && e && (s(t), t.addEventListener(v, e._aplus_tap_callback = function (t) {
                    e(t, t.target)
                }, !1))
            }, un: function (t, e) {
                t && t.removeEventListener && e && e._aplus_tap_callback && t.removeEventListener(v, e._aplus_tap_callback, !1)
            }
        }
    }, function (t, e) {
        "use strict";
        t.exports = function (t) {
            var e = goldlog && goldlog._$ ? goldlog._$.pageLoadTime : "";
            if ("setPageSPM" === t) {
                goldlog.preSetPageSPMTime = goldlog.setPageSPMTime || e || "", goldlog.setPageSPMTime = (new Date).getTime();
                var n = goldlog.spm_ab;
                n && "0.0" !== n && goldlog.record("/x.p.d", "OTHER", "_s=" + goldlog.preSetPageSPMTime + "&_e=" + goldlog.setPageSPMTime + "&from=" + t, "POST");
            } else if ("beforeunload" === t) {
                var o = "";
                try {
                    o = performance.timing.domInteractive
                } catch (t) {
                    o = e
                }
                var a = (new Date).getTime();
                goldlog.record("/x.p.d", "OTHER", "_s=" + o + "&_e=" + a + "&from=" + t, "POST")
            }
        }
    }, function (t, e, n) {
        "use strict";

        function o() {
            var t = (new Date).getTime(), e = Math.floor(t / 72e5), n = a.getElementById("aplus-sufei"),
                o = goldlog._$ || {}, s = goldlog.getCdnPath(), u = s + "/alilog/aplus_plugin_xwj/index.js?t=" + e,
                c = s + "/alilog/stat/a.js?t=" + e, l = s + "/secdev/entry/index.js?t=" + e,
                p = s + "/sd/baxia-entry/index.js?t=" + e, g = s + "/alilog/mlog/wp_beacon.js?t=" + e, f = o.meta_info,
                d = function () {
                    r.addScript(c), r.addScript(g), r.addScript(u)
                }, _ = function () {
                    Math.random() < .01 && r.addScript(c), f.ms_data_instance_id && f.ms_prototype_id && f.ms_prototype_id.match(/^[124]$/) && f.ms_data_shop_id && r.addScript(g);
                    var t = f["aplus-rate-ahot"];
                    (Math.random() < t || f["ahot-aplus"]) && r.addScript(u)
                }, h = f["aplus-xplug"];
            i.onload(function () {
                try {
                    switch (h) {
                        case"NONE":
                            break;
                        case"ALL":
                            d();
                            break;
                        default:
                            _()
                    }
                } catch (t) {
                }
            }), "NONE" !== h && (r.addScript(p, "", "aplus-baxia"), setTimeout(function () {
                n && "script" == n.tagName.toLowerCase() || r.addScript(l, "", "aplus-sufei")
            }, 10))
        }

        var a = document, r = n(31), i = n(79), s = n(84);
        e.run = function () {
            o()
        }, e.init_watchGoldlogQueue = s.init_watchGoldlogQueue
    }, function (t, e, n) {
        "use strict";

        function o(t, e) {
            for (var n = {
                subscribeMwChangeQueue: [],
                subscribeMetaQueue: [],
                subscribeQueue: [],
                metaQueue: [],
                othersQueue: []
            }, o = [], a = {}; a = t.shift();) try {
                var r = a.action, i = a.arguments[0];
                /subscribe/.test(r) ? "setMetaInfo" === i ? n.subscribeMetaQueue.push(a) : "mw_change_pv" === i || "mw_change_hjlj" === i ? n.subscribeMwChangeQueue.push(a) : n.subscribeQueue.push(a) : /MetaInfo/.test(r) ? n.metaQueue.push(a) : n.othersQueue.push(a)
            } catch (t) {
                n.othersQueue.push(a), u.do_tracker_jserror({
                    message: t && t.message,
                    error: encodeURIComponent(t.stack),
                    filename: "getFormatQueue"
                })
            }
            var s;
            return e && n[e] && (s = n[e], n[e] = []), o = n.subscribeMwChangeQueue.concat(n.metaQueue), o = o.concat(n.subscribeQueue), o = o.concat(n.subscribeMetaQueue, n.othersQueue), {
                queue: o,
                formatQueue: s
            }
        }

        var a = window, r = n(9), i = n(85), s = n(86), u = n(3), c = "goldlog_queue", l = function (t, e, n) {
            try {
                /_aplus_cplugin_track_deb/.test(t) || /_aplus_cplugin_m/.test(t) || u.do_tracker_jserror({
                    message: n || 'illegal task: goldlog_queue.push("' + JSON.stringify(e) + '")',
                    error: JSON.stringify(e),
                    filename: "processTask"
                })
            } catch (t) {
            }
        }, p = function (t, e) {
            var n = t ? t.action : "", o = t ? t.arguments : "";
            try {
                if (n && o && r.isArray(o)) {
                    var i = n.split("."), s = a, u = a;
                    if (3 === i.length) s = a[i[0]][i[1]] || {}, u = s[i[2]] ? s[i[2]] : ""; else for (; i.length;) if (u = s = s[i.shift()], !s) return void ("function" == typeof e ? e(t) : l(n, t));
                    "function" == typeof u && u.apply(s, o)
                } else l(n, t)
            } catch (e) {
                l(n, t, e.message)
            }
        }, g = function (t) {
            function e() {
                if (t && r.isArray(t) && t.length) {
                    for (var e = o(t).queue, n = {}, a = []; n = e.shift();) p(n, function (t) {
                        a.push(t)
                    });
                    a.length > 0 && setTimeout(function () {
                        for (; n = a.shift();) p(n)
                    }, 100)
                }
            }

            try {
                e()
            } catch (t) {
                u.do_tracker_jserror({
                    message: t && t.message,
                    error: encodeURIComponent(t.stack),
                    filename: "processGoldlogQueue"
                })
            }
        };
        e.processGoldlogQueue = g;
        var f = i.extend({
            push: function (t) {
                this.length++, p(t)
            }
        });
        e.init_watchGoldlogQueue = function (t) {
            try {
                var e = a[c] || [];
                if (t) {
                    var n = o(e, t);
                    a[c] = n.queue, g(n.formatQueue)
                } else a[c] = f.create({startLength: e.length, length: 0}), s.init_loadAplusPlugin(), g(e)
            } catch (t) {
                u.do_tracker_jserror({
                    message: t && t.message,
                    error: encodeURIComponent(t.stack),
                    filename: "init_watchGoldlogQueue"
                })
            }
        }
    }, function (t, e) {
        "use strict";

        function n() {
        }

        n.prototype.extend = function () {
        }, n.prototype.create = function () {
        }, n.extend = function (t) {
            return this.prototype.extend.call(this, t)
        }, n.prototype.create = function (t) {
            var e = new this;
            for (var n in t) e[n] = t[n];
            return e
        }, n.prototype.extend = function (t) {
            var e = function () {
            };
            try {
                "function" != typeof Object.create && (Object.create = function (t) {
                    function e() {
                    }

                    return e.prototype = t, new e
                }), e.prototype = Object.create(this.prototype);
                for (var n in t) e.prototype[n] = t[n];
                e.prototype.constructor = e, e.extend = e.prototype.extend, e.create = e.prototype.create
            } catch (t) {
                console.log(t)
            } finally {
                return e
            }
        }, t.exports = n
    }, function (t, e, n) {
        "use strict";
        var o = n(31), a = n(29), r = n(6), i = function () {
            var t = goldlog.getCdnPath() + "/alilog/s/" + r.lver + "/plugin/";
            return {aplus_ae_path: t + "aplus_ae.js", aplus_ac_path: t + "aplus_ac.js"}
        }, s = {}, u = "aplus-auto-exp", c = "aplus-auto-clk", l = function (t, e) {
            var n = i(), r = goldlog && goldlog.getMetaInfo ? goldlog.getMetaInfo(t) : "",
                l = e || r || a.getMetaCnt(t), p = {};
            p[u] = n.aplus_ae_path, p[c] = n.aplus_ac_path, l && p[t] && !s[t] && (o.addScript(p[t]), s[t] = !0)
        };
        e.init_loadAplusPlugin = function () {
            try {
                !goldlog._aplus_auto_exp && l(u), !goldlog._aplus_ac && l(c), goldlog.aplus_pubsub.subscribe("setMetaInfo", function (t, e) {
                    t !== u || goldlog._aplus_auto_exp || l(t, e), t !== c || goldlog._aplus_ac || l(t, e)
                })
            } catch (t) {
            }
        }
    }, function (t, e) {
        "use strict";

        function n(t, e) {
            return t.indexOf(e) > -1
        }

        function o(t, e) {
            for (var o = 0, a = t.length; o < a; o++) if (n(e, t[o])) return !0;
            return !1
        }

        var a = location.host, r = ["admin.taobao.org", "mybank.cn"],
            i = ["tmc.admin.taobao.org", "tmall.admin.taobao.org"];
        e.is_exception = o(r, a) && !o(i, a)
    }, function (t, e, n) {
        "use strict";

        function o() {
            var t, e, n, o, a = c.getElementsByTagName("meta");
            for (t = 0, e = a.length; t < e; t++) if (n = a[t], o = n.getAttribute("name"), "data-spm" === o || "spm-id" === o) return n
        }

        function a() {
            var t = c.createElement("meta");
            t.setAttribute("name", "data-spm");
            var e = c.getElementsByTagName("head")[0];
            return e && e.insertBefore(t, e.firstChild), t
        }

        function r() {
            var t = o();
            t || (t = a()), t.setAttribute("content", goldlog.spm_ab[0] || "");
            var e = c.getElementsByTagName("body")[0];
            e && e.setAttribute("data-spm", goldlog.spm_ab[1] || "")
        }

        function i() {
            var t, e, n, o = c.getElementsByTagName("*");
            for (t = 0, e = o.length; t < e; t++) n = o[t], n.getAttribute("data-spm-max-idx") && n.setAttribute("data-spm-max-idx", ""), n.getAttribute("data-spm-anchor-id") && n.setAttribute("data-spm-anchor-id", "")
        }

        function s() {
            var t = 5e3;
            try {
                var e = goldlog.getMetaInfo("aplus-mmstat-timeout");
                if (e) {
                    var n = parseInt(e);
                    n >= 1e3 && n <= 1e4 && (t = n)
                }
            } catch (t) {
            }
            return t
        }

        var u = window, c = document, l = n(85), p = n(17), g = n(79), f = n(31), d = n(23), _ = n(38), h = n(9),
            m = n(26), v = n(21), b = n(82), y = n(49), w = n(27), x = w.getInfo(), j = n(4), T = n(3), P = n(89),
            S = n(11), A = n(92), k = n(94), E = [], M = [], U = [], I = [], C = "//g.alicdn.com",
            N = "//g-assets.daily.taobao.net", O = "//assets.alicdn.com/g", V = "//s.alicdn.com/@g/",
            G = "//u.alicdn.com", L = "//laz-g-cdn.alicdn.com";
        e.run = l.extend({
            getCdnPath: function () {
                var t = f.getCurrentNode(), e = C, n = [O, V, N, G, L], o = new RegExp(G);
                if (t) for (var a = 0; a < n.length; a++) {
                    var r = new RegExp(n[a]);
                    if (r.test(t.src)) {
                        e = n[a], o.test(t.src) && (e = O);
                        break
                    }
                }
                return e
            }, isInternational: function () {
                this.cdnPath || (this.cdnPath = this.getCdnPath());
                var t = [O, V, L].indexOf(this.cdnPath) > -1;
                return t || "int" === this.getMetaInfo("aplus-env")
            }, getCookie: function (t) {
                return S.getCookie(t)
            }, getParam: function (t) {
                var e = u.WindVane || {}, n = e && "function" == typeof e.getParam ? e.getParam(t) : "";
                return n
            }, beforeSendPV: function (t) {
                E.push(t)
            }, afterSendPV: function (t) {
                M.push(t)
            }, send: function (t, e, n) {
                var o;
                if (0 === t.indexOf("//")) {
                    var a = v.getProtocal();
                    t = a + t
                }
                return o = "POST" === n && navigator && navigator.sendBeacon ? k.postData(t, e) : k.sendImg(p.makeUrl(t, e), s())
            }, launch: function (t, e) {
                var n;
                try {
                    e = h.assign(e, t), n = goldlog._$._sendPV(e, t);
                    var o = goldlog.spm_ab ? goldlog.spm_ab.join(".") : "0.0";
                    T.do_tracker_obsolete_inter({
                        page: location.hostname + location.pathname,
                        spm_ab: o,
                        interface_name: "goldlog.launch",
                        interface_params: "userdata = " + JSON.stringify(t) + ", config = " + JSON.stringify(e)
                    })
                } catch (t) {
                } finally {
                    return d.logger({msg: "warning: This interface is deprecated, please use goldlog.sendPV instead! API: http://log.alibaba-inc.com/log/info.htm?type=2277&id=31"}), n
                }
            }, _$: {
                _sendPV: function (t, e) {
                    if (t = t || {}, h.any(E, function (e) {
                        return e(goldlog, t) === !1
                    })) return !1;
                    var o = n(95).SendPV, a = new o;
                    return "undefined" == typeof t.recordType && (t.recordType = j.recordTypes.pv), a.run(t, e, {fn_after_pv: M}), !0
                }, _sendPseudo: function (t, e) {
                    t || (t = {});
                    var o = n(96).SendPrePV, a = new o;
                    return "undefined" == typeof t.recordType && (t.recordType = j.recordTypes.prepv), a.run(t, e, {}, function () {
                        _.doPubMsg(["sendPrePV", "complete"])
                    }), !0
                }
            }, sendPV: function (t, e) {
                return e = e || {}, e.pageName && goldlog.setMetaInfo("aplus-pagename", e.pageName), goldlog._$._sendPV(t, e)
            }, updatePageProperties: function (t) {
                t && "object" == typeof t ? (t._page && (t.pageName = t._page, delete t._page), t.pageName && (goldlog.setMetaInfo("aplus-pagename", t.pageName), delete t.pageName), goldlog.appendMetaInfo("aplus-cpvdata", t)) : d.logger({msg: "warning: typeof updatePageProperties's params must be object"})
            }, beforeRecord: function (t) {
                U.push(t)
            }, afterRecord: function (t) {
                I.push(t)
            }, record: function (t, e, n, o, a) {
                if (!h.any(U, function (t) {
                    return t(goldlog) === !1
                })) return "POST" !== o && "WS" !== o && "WS-ONLY" !== o && (o = "GET"), P.run({
                    recordType: j.recordTypes.hjlj,
                    method: o
                }, {logkey: t, gmkey: e, gokey: n}, {fn_after_record: I}, function () {
                    "function" == typeof a && a()
                }), !0
            }, recordUdata: function (t, e, n, o, a) {
                var r = m.getGoldlogVal("_$") || {}, i = r.spm || {};
                "POST" !== o && "WS" !== o && "WS-ONLY" !== o && (o = "GET"), P.run({
                    ignore_chksum: !0,
                    method: o,
                    recordType: j.recordTypes.uhjlj
                }, {logkey: t, gmkey: e, gokey: n, "spm-cnt": i.spm_cnt, "spm-pre": i.spm_pre}, {}, function () {
                    h.isFunction(a) && a()
                })
            }, setPageSPM: function (t, e, n) {
                var o = "setPageSPM";
                b(o);
                var a = goldlog.getMetaInfo("aplus-spm-fixed"), s = "function" == typeof n ? n : function () {
                };
                goldlog.spm_ab = goldlog.spm_ab || [];
                var u = h.cloneObj(goldlog.spm_ab);
                if (t && (goldlog.spm_ab[0] = "" + t, goldlog._$.spm.data.a = "" + t), e && (goldlog.spm_ab[1] = "" + e, goldlog._$.spm.data.b = "" + e), y.spaInit(goldlog, x, u), "1" !== a) {
                    var c = u.join(".");
                    goldlog.spmab_pre = c
                }
                var l = goldlog.spm_ab.join(".");
                _.doPubMsg([o, {
                    spmab_pre: goldlog.spmab_pre,
                    spmab: l
                }]), _.doCachePubs([o, {spmab_pre: goldlog.spmab_pre, spmab: l}]), r(), i(), s()
            }, setMetaInfo: function (t, e, n) {
                if (w.setMetaInfo(t, e, n)) {
                    var o = m.getGoldlogVal("_$") || {};
                    o.meta_info = w.qGet();
                    var a = m.setGoldlogVal("_$", o), r = A.isDisablePvid() + "";
                    return "aplus-disable-pvid" === t && r !== e + "" && y.resetSpmCntPvid(), _.doPubMsg(["setMetaInfo", t, e, n]), _.doCachePubs(["setMetaInfo", t, e, n]), a
                }
            }, appendMetaInfo: w.appendMetaInfo, getMetaInfo: function (t) {
                return w.getMetaInfo(t)
            }, on: g.on, cloneDeep: h.cloneDeep, getPvId: A.getPvId
        })
    }, function (t, e, n) {
        "use strict";
        var o = n(9), a = n(26), r = n(38), i = n(23), s = n(90), u = n(91), c = n(4);
        e.run = function (t, e, n, l) {
            var p = new u;
            p.init({middleware: [], config: t, plugins: c.plugins_hjlj});
            var g = p.run(), f = new c.context_hjlj;
            f.userdata = e, f.logger = i.logger;
            var d = {context: f, pubsub: a.getGoldlogVal("aplus_pubsub"), pubsubType: "hjlj"}, _ = new s;
            _.create(d), _.wrap(g, function () {
                d.context.status = "complete", d.context.method = t.method, r.doPubMsg(["mw_change_hjlj", d.context]), n && n.fn_after_record && o.each(n.fn_after_record, function (t) {
                    t(window.goldlog)
                }), "function" == typeof l && l()
            })()
        }
    }, function (t, e, n) {
        "use strict";

        function o() {
        }

        var a = n(24), r = n(22), i = n(23), s = n(3), u = n(11);
        o.prototype.create = function (t) {
            for (var e in t) "undefined" == typeof this[e] && (this[e] = t[e]);
            return this
        }, o.prototype.pubsubInfo = function (t, e) {
            try {
                t && t.pubsub && t.pubsub.publish("mw_change_" + t.pubsubType, t.context, e)
            } catch (t) {
            }
        }, o.prototype.calledList = [], o.prototype.setCalledList = function (t) {
            a.indexof(this.calledList, t) === -1 && this.calledList.push(t)
        }, o.prototype.resetCalledList = function () {
            this.calledList = []
        }, o.prototype.wrap = function (t, e) {
            var n = this, o = this.context || {}, c = o.compose || {}, l = c.maxTimeout || 1e4;
            return function (o) {
                var c, p = t.length, g = 0, f = 0, d = function () {
                    if (n.pubsubInfo(n, t[g]), g === p) return o = "done", n.resetCalledList(), "function" == typeof e && e.call(n, o), void clearTimeout(c);
                    if (a.indexof(n.calledList, g) === -1) {
                        if (n.setCalledList(g), !t[g] || "function" != typeof t[g][0]) return;
                        try {
                            o = t[g][0].call(n, o, function () {
                                g++, f = 1, clearTimeout(c), d(g)
                            })
                        } catch (e) {
                            s.do_tracker_jserror({
                                message: e ? e.message : "compose middleware error",
                                error: encodeURIComponent(e.stack),
                                filename: t[g][1]
                            })
                        }
                    }
                    var _ = "number" == typeof o;
                    if ("pause" === o || _) {
                        f = 0;
                        var h = _ ? o : l, m = t[g] ? t[g][1] : "";
                        c = r.sleep(h, function () {
                            if (0 === f) {
                                var t = "jump the middleware about " + m + ", because waiting timeout maxTimeout = " + h + "ms!";
                                i.logger({msg: t});
                                var e = window.goldlog_queue || (window.goldlog_queue = []);
                                e.push({
                                    action: "goldlog._aplus_cplugin_m.do_tracker_browser_support",
                                    arguments: [{
                                        msg: t,
                                        spmab: goldlog.spm_ab,
                                        page: location.href,
                                        etag: n.context ? JSON.stringify(n.context.etag) : "",
                                        cna: document.cookie ? u.getCookie("cna") : ""
                                    }]
                                }), o = null, g++, d(g)
                            }
                        })
                    } else "done" === o ? (g = p, d(g)) : (g++, d(g))
                };
                return n.calledList && n.calledList.length > 0 && n.resetCalledList(), d(g)
            }
        }, t.exports = o
    }, function (t, e, n) {
        "use strict";
        var o = n(24);
        t.exports = function () {
            return {
                init: function (t) {
                    this.opts = t, t && "object" == typeof t.middleware && t.middleware.length > 0 ? this.middleware = t.middleware : this.middleware = [], this.plugins_name = []
                }, pubsubInfo: function (t, e) {
                    try {
                        var n = t.pubsub;
                        n && n.publish("plugins_change_" + t.pubsubType, e)
                    } catch (t) {
                    }
                }, checkPluginLoader: function (t, e) {
                    var n = !0;
                    if ("object" == typeof e.enable && "function" == typeof e.enable.isEnable ? n = e.enable.isEnable(e.name) : "boolean" == typeof e.enable && (n = !!e.enable), !n) return !1;
                    if (n && e.deps && e.deps.length > 0) for (var a = 0; a < e.deps.length; a++) if (o.indexof(this.plugins_name, e.deps[a]) === -1) return !1;
                    return !0
                }, run: function (t) {
                    t || (t = 0);
                    var e = this, n = this.middleware, o = this.opts || {}, a = o.plugins;
                    if (a && "object" == typeof a && a.length > 0) {
                        var r = a[t];
                        if (this.checkPluginLoader(a, r) && (this.plugins_name.push(r.name), n.push([function (t, n) {
                            e.pubsubInfo(this, r);
                            var a = new r.path;
                            return a.init({context: this.context, config: o.config}), a.run(t, n)
                        }, r.name])), t++, a[t]) return this.run(t)
                    } else window.console && console.log("aplus plugins " + JSON.stringify(a) + " must be object of array!");
                    return n
                }
            }
        }
    }, function (t, e, n) {
        "use strict";

        function o() {
            var t = "true" === l.disablePvid;
            try {
                var e = goldlog.getMetaInfo("aplus-disable-pvid") + "";
                "true" === e ? t = !0 : "false" === e && (t = !1)
            } catch (t) {
            }
            return t
        }

        function a(t) {
            function e(t) {
                var e = "0123456789abcdefhijklmnopqrstuvwxyzABCDEFHIJKLMNOPQRSTUVWXYZ",
                    n = "0123456789abcdefghijkmnopqrstuvwxyzABCDEFGHIJKMNOPQRSTUVWXYZ";
                return 1 == t ? e.substr(Math.floor(60 * Math.random()), 1) : 2 == t ? n.substr(Math.floor(60 * Math.random()), 1) : "0"
            }

            for (var n, o = "", a = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", r = !1; o.length < t;) n = a.substr(Math.floor(62 * Math.random()), 1), !r && o.length <= 2 && ("g" == n.toLowerCase() || "l" == n.toLowerCase()) && (0 === o.length && "g" == n.toLowerCase() ? Math.random() < .5 && (n = e(1), r = !0) : 1 == o.length && "l" == n.toLowerCase() && "g" == o.charAt(0).toLowerCase() && (n = e(2), r = !0)), o += n;
            return o
        }

        function r(t, e, n) {
            return t ? u.hash(encodeURIComponent(t)).substr(0, e) : n
        }

        function i() {
            var t = a(8), e = t.substr(0, 4), n = t.substr(0, 6);
            return [r(location.href, 4, e), r(document.title, 4, e), n].join("")
        }

        function s() {
            var t = goldlog.pvid;
            return goldlog.pvid = i(), c.doPubMsg(["pvidChange", {
                pre_pvid: t,
                pvid: goldlog.pvid
            }]), c.doCachePubs(["pvidChange", {pre_pvid: t, pvid: goldlog.pvid}]), o() ? "" : goldlog.pvid
        }

        var u = n(93), c = n(38), l = n(4);
        e.isDisablePvid = o, e.makePVId = s, e.getPvId = function () {
            return o() ? "" : goldlog.pvid
        }
    }, function (t, e) {
        "use strict";
        var n = 1315423911;
        e.hash = function (t, e) {
            var o, a, r = e || n;
            for (o = t.length - 1; o >= 0; o--) a = t.charCodeAt(o), r ^= (r << 5) + a + (r >> 2);
            var i = (2147483647 & r).toString(16);
            return i
        }
    }, function (t, e, n) {
        "use strict";

        function o(t) {
            if (!t) return "";
            var e = decodeURIComponent(t).match(/cache=\w+/);
            return e && 1 === e.length ? e[0].split("=")[1] : void 0
        }

        var a = n(3), r = window;
        e.sendImg = function (t, e) {
            var n = new Image, i = "_img_" + Math.random();
            r[i] = n;
            var s = function () {
                if (r[i]) try {
                    delete r[i]
                } catch (t) {
                    r[i] = void 0
                }
            };
            return n.onload = function () {
                s()
            }, n.onerror = function () {
                a.do_tracker_jserror({message: "loadError", error: "", filename: "sendImg", logid: o(t)}), s()
            }, setTimeout(function () {
                window[i] && (a.do_tracker_jserror({
                    message: "loadTimeout",
                    error: e,
                    filename: "sendImg",
                    logid: o(t)
                }), window[i].src = "", s())
            }, e || 3e3), n.src = t, n = null, t
        }, e.postData = function (t, e) {
            for (var n in e) ["cna"].indexOf(n) === -1 && (e[n] = encodeURIComponent(e[n]));
            return navigator.sendBeacon(t, JSON.stringify(e)), t
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(9), a = n(26), r = n(38), i = n(23), s = n(90), u = n(91), c = n(4), l = function () {
        };
        l.prototype.run = function (t, e, n) {
            var l = new u;
            l.init({middleware: [], config: t, plugins: c.plugins_pv});
            var p = l.run(), g = new c.context;
            g.userdata = e, g.logger = i.logger;
            var f = {context: g, pubsub: a.getGoldlogVal("aplus_pubsub"), pubsubType: "pv"}, d = new s;
            d.create(f), d.wrap(p, function () {
                var e = f.context.can_to_sendpv || {};
                f.context.status = "YES" === e.flag ? "complete" : "skip", f.context.method = t.method || "GET", r.doPubMsg(["mw_change_pv", f.context]), n && n.fn_after_record && o.each(n.fn_after_pv, function (e) {
                    e(window.goldlog, t)
                })
            })()
        }, e.SendPV = l
    }, function (t, e, n) {
        "use strict";
        var o = n(9), a = n(26), r = n(38), i = n(23), s = n(90), u = n(91), c = n(4), l = function () {
        };
        l.prototype.run = function (t, e, n, l) {
            var p = new u;
            p.init({middleware: [], config: t, plugins: c.plugins_prepv});
            var g = p.run(), f = new c.context_prepv;
            f.userdata = e, f.logger = i.logger;
            var d = {context: f, pubsub: a.getGoldlogVal("aplus_pubsub"), pubsubType: "prepv"}, _ = new s;
            _.create(d), _.wrap(g, function () {
                d.context.status = "complete", r.doPubMsg(["mw_change_prepv", d.context]), n && n.fn_after_record && o.each(n.fn_after_pv, function (e) {
                    e(window.goldlog, t)
                }), a.setGoldlogVal("prepv_context", f), "function" == typeof l && l()
            })()
        }, e.SendPrePV = l
    }, function (t, e, n) {
        "use strict";
        !function () {
            var t = window.goldlog || (window.goldlog = {}), e = n(98);
            t.aplus_pubsub || (t.aplus_pubsub = e.create())
        }()
    }, function (t, e, n) {
        "use strict";

        function o(t) {
            if ("function" != typeof t) throw new TypeError(t + " is not a function");
            return t
        }

        var a = n(85), r = function (t) {
            for (var e = t.length, n = new Array(e - 1), o = 1; o < e; o++) n[o - 1] = t[o];
            return n
        }, i = a.extend({
            create: function (t) {
                var e = new this;
                for (var n in t) e[n] = t[n];
                return e.handlers = [], e.pubs = {}, e
            }, setHandlers: function (t) {
                this.handlers = t
            }, subscribe: function (t, e) {
                o(e);
                var n = this, a = n.pubs || {}, r = a[t] || [];
                if (r) for (var i = 0; i < r.length; i++) {
                    var s = r[i]();
                    e.apply(n, s)
                }
                var u = n.handlers || [];
                return t in u || (u[t] = []), u[t].push(e), n.setHandlers(u), n
            }, subscribeOnce: function (t, e) {
                o(e);
                var n, a = this;
                return this.subscribe.call(this, t, n = function () {
                    a.unsubscribe.call(a, t, n);
                    var o = Array.prototype.slice.call(arguments);
                    e.apply(a, o)
                }), this
            }, unsubscribe: function (t, e) {
                o(e);
                var n = this.handlers[t];
                if (!n) return this;
                if ("object" == typeof n && n.length > 0) {
                    for (var a = 0; a < n.length; a++) {
                        var r = e.toString(), i = n[a].toString();
                        r === i && n.splice(a, 1)
                    }
                    this.handlers[t] = n
                } else delete this.handlers[t];
                return this
            }, publish: function (t) {
                var e = r(arguments), n = this.handlers || [], o = n[t] ? n[t].length : 0;
                if (o > 0) for (var a = 0; a < o; a++) {
                    var i = n[t][a];
                    i && "function" == typeof i && i.apply(this, e)
                }
                return this
            }, cachePubs: function (t) {
                var e = this.pubs || {}, n = r(arguments);
                e[t] || (e[t] = []), e[t].push(function () {
                    return n
                })
            }
        });
        t.exports = i
    }, function (t, e, n) {
        "use strict";
        var o = n(41), a = n(38), r = n(51), i = n(4);
        e.init = function () {
            i.initLoad.init_watchGoldlogQueue("metaQueue"), n(100)(function () {
                var t = goldlog._$ || {}, e = navigator.userAgent;
                e.match(/AliApp\(([A-Z\-]+)\/([\d\.]+)\)/i) && (t.is_ali_app = !0), i.utilPvid.makePVId();
                var s = n(49);
                t.spm = s, t.is_WindVane = o.is_WindVane;
                var u = t.meta_info;
                s.init(goldlog, u, function () {
                    i.initLoad.init_watchGoldlogQueue();
                    var t = n(4).spmException, e = t.is_exception;
                    e || n(102);
                    var o, r = "complete";
                    o = ["aplusReady", r], a.doPubMsg(o), a.doCachePubs(o)
                }), goldlog.beforeSendPV(function (e, n) {
                    if (t.page_url = location.href, t.page_referrer = r.getRefer(), n.is_auto && "1" === u["aplus-manual-pv"]) return !1
                }), goldlog.afterSendPV(function () {
                    window.g_SPM && (g_SPM._current_spm = "")
                }), i.is_auto_pv + "" == "true" && goldlog.sendPV({is_auto: !0}), i.initLoad.run(), i.beforeUnload.run()
            })
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(38);
        t.exports = function (t) {
            var e = n(101).AplusInit, a = new e;
            a.run({}, function (e) {
                o.doPubMsg(["aplusInitContext", e]), o.doCachePubs(["aplusInitContext", e]), "function" == typeof t && t()
            })
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(26), a = n(23), r = n(90), i = n(91), s = n(4), u = function () {
        };
        u.prototype.run = function (t, e) {
            var n = new i;
            n.init({middleware: [], config: t, plugins: s.aplus_init});
            var u = n.run(), c = new s.context;
            c.logger = a.logger;
            var l = {context: c, pubsub: o.getGoldlogVal("aplus_pubsub"), pubsubType: "aplusinit"}, p = new r;
            p.create(l), p.wrap(u, function () {
                "function" == typeof e && e(l.context)
            })()
        }, e.AplusInit = u
    }, function (t, e, n) {
        "use strict";
        !function () {
            var t, e = n(9), o = n(26), a = n(103), r = function () {
                t = !0;
                var n = window.g_SPM || {};
                e.isFunction(n.getParam) || e.isFunction(n.spm) || a.run()
            }, i = window.goldlog || (window.goldlog = {});
            i.aplus_pubsub && "function" == typeof i.aplus_pubsub.publish && i.aplus_pubsub.subscribe("goldlogReady", function (e) {
                "complete" !== e || t || r()
            });
            var s = 0, u = function () {
                if (!t) {
                    var e = o.getGoldlogVal("_$") || {};
                    "complete" === e.status ? r() : s < 50 && (++s, setTimeout(function () {
                        u()
                    }, 200))
                }
            };
            u()
        }()
    }, function (t, e, n) {
        "use strict";
        var o = n(31), a = n(26), r = n(104), i = n(108), s = n(109), u = n(110), c = n(111);
        e.run = function () {
            var t = a.getGoldlogVal("_$") || {}, e = t.meta_info, n = e["aplus-touch"], l = {
                isTouchEnabled: o.isTouch() || "1" === n || "tap" === n,
                isTerminal: t.is_terminal || /WindVane/i.test(navigator.userAgent)
            };
            window.g_SPM = {
                spm_d_for_ad: {},
                resetModule: r.spm_resetModule,
                anchorBeacon: r.spm_spmAnchorChk,
                getParam: r.spm_getSPMParam,
                spm: r.spm_forwap
            }, i.run(l), s.run(l), u.run(l), c.run(l)
        }
    }, function (t, e, n) {
        "use strict";

        function o(t) {
            if (t && 1 === t.nodeType) {
                s.tryToRemoveAttribute(t, "data-spm-max-idx"), s.tryToRemoveAttribute(t, "data-auto-spmd-max-idx");
                for (var e = u.nodeListToArray(t.getElementsByTagName("a")), n = u.nodeListToArray(t.getElementsByTagName("area")), o = e.concat(n), a = 0; a < o.length; a++) s.tryToRemoveAttribute(o[a], l)
            }
        }

        function a(t, e) {
            var n = s.tryToGetAttribute(t, l), o = "0";
            if (n && c.spm_isSPMAnchorIdMatch(n)) c.spm_anchorEnsureSPMId_inHref(t, n, e); else {
                var a = c.spm_spmGetParentSPMId(t.parentNode);
                if (o = a.spm_c, !o) return void c.spm_dealNoneSPMLink(t, e);
                c.spm_initSPMModule(a.el, o, e), c.spm_initSPMModule(a.el, o, e, !0)
            }
        }

        function r(t) {
            var e, n = t.tagName;
            "A" !== n && "AREA" !== n ? e = c.spm_getParamForAD(t) : (a(t, !0), e = s.tryToGetAttribute(t, l)), e || (e = "0.0.0.0");
            var o = goldlog.getPvId();
            4 === e.split(".").length && o && (e += "." + o), "A" !== n && "AREA" !== n && s.tryToSetAttribute(t, l, e), e = e.split(".");
            var r = {a: e[0], b: e[1], c: e[2], d: e[3]};
            return e[4] && (r.e = e[4]), r
        }

        function i(t, e) {
            var n = r(t), o = [n.a, n.b, n.c, n.d];
            return e && n.e && o.push(n.e), o.join(".")
        }

        var s = n(28), u = n(18), c = n(105), l = "data-spm-anchor-id";
        e.spm_resetModule = o, e.spm_spmAnchorChk = a, e.spm_getSPMParam = r, e.spm_forwap = i
    }, function (t, e, n) {
        "use strict";

        function o(t) {
            for (var e, n = "data-spm-ab-max-idx", o = {}, a = ""; t && t.tagName != j && t.tagName != x;) {
                if (!a && (a = v.tryToGetAttribute(t, "data-spm-ab"))) {
                    e = parseInt(v.tryToGetAttribute(t, n)) || 0, o.a_spm_ab = a, o.ab_idx = ++e, t.setAttribute(n, e);
                    break
                }
                if (v.tryToGetAttribute(t, "data-spm")) break;
                t = t.parentNode
            }
            return o
        }

        function a() {
            var t = b.getGoldlogVal("_$") || {}, e = t.spm || {}, n = e.data || {};
            return [n.a, n.b].join(".")
        }

        function r(t) {
            var e = a(), n = t.split(".");
            return n[0] + "." + n[1] == e
        }

        function i(t, e) {
            if (!goldlog.isUT4Aplus || "UT4Aplus" !== goldlog.getMetaInfo("aplus-toUT")) {
                if (t && /&?\bspm=[^&#]*/.test(t) && (t = t.replace(/&?\bspm=[^&#]*/g, "").replace(/&{2,}/g, "&").replace(/\?&/, "?").replace(/\?$/, "")), !e) return t;
                var n, o, a, r, i, s, u, c = "&";
                t.indexOf("#") !== -1 && (a = t.split("#"), t = a.shift(), o = a.join("#")), r = t.split("?"), i = r.length - 1, a = r[0].split("//"), a = a[a.length - 1].split("/"), s = a.length > 1 ? a.pop() : "", i > 0 && (n = r.pop(), t = r.join("?")), n && i > 1 && n.indexOf("&") == -1 && n.indexOf("%") !== -1 && (c = "%26");
                var l = "";
                if (t = t + "?spm=" + l + e + (n ? c + n : "") + (o ? "#" + o : ""), u = h.isContain(s, ".") ? s.split(".").pop().toLowerCase() : "") {
                    if ({png: 1, jpg: 1, jpeg: 1, gif: 1, bmp: 1, swf: 1}.hasOwnProperty(u)) return 0;
                    !n && i <= 1 && (o || {
                        htm: 1,
                        html: 1,
                        php: 1,
                        aspx: 1,
                        shtml: 1,
                        xhtml: 1
                    }.hasOwnProperty(u) || (t += "&file=" + s))
                }
                return t
            }
        }

        function s(t, e) {
            if (!goldlog.isUT4Aplus || "UT4Aplus" !== goldlog.getMetaInfo("aplus-toUT")) {
                var n, o = t.innerHTML;
                o && o.indexOf("<") == -1 && (n = document.createElement("b"), n.style.display = "none", t.appendChild(n)), t.href = e, n && t.removeChild(n)
            }
        }

        function u(t, e, n) {
            if (!/^0\.0\.?/.test(e)) {
                var o = y.tryToGetHref(t), r = a(), u = w.is_ignore_spm(t);
                if (u) {
                    var c = _.param2obj(o);
                    if (c.spm && c.spm.split) for (var l = c.spm.split("."), p = e.split("."), g = 0; g < 3 && p[g] === l[g]; g++) 2 === g && l[3] && (e = c.spm)
                }
                t.setAttribute("data-spm-anchor-id", e);
                var f = goldlog.getPvId();
                f && (e += "." + f);
                var d = "0.0";
                (f || r && r != d) && (u || n || (o = i(o, e)) && s(t, o))
            }
        }

        function c(t) {
            var e = v.tryToGetAttribute(t, P), n = m.parseSemicolonContent(e) || {};
            return n
        }

        function l(t) {
            var e, n = b.getGoldlogVal("_$") || {}, o = n.spm.data;
            return "0" == o.a && "0" == o.b ? e = "0" : (e = v.tryToGetAttribute(t, T), e && e.match(/^d\w+$/) || (e = "")), e
        }

        function p(t, e) {
            for (var n = [], o = m.nodeListToArray(t.getElementsByTagName("a")), a = m.nodeListToArray(t.getElementsByTagName("area")), r = o.concat(a), i = 0; i < r.length; i++) {
                for (var s = !1, u = r[i], c = r[i]; (u = u.parentNode) && u != t;) if (v.tryToGetAttribute(u, T)) {
                    s = !0;
                    break
                }
                if (!s) {
                    var l = v.tryToGetAttribute(c, S);
                    e || "t" === l ? e && "t" === l && n.push(c) : n.push(c)
                }
            }
            return n
        }

        function g(t) {
            for (var e, n = t; t && t.tagName !== j && t.tagName !== x && t.getAttribute;) {
                var o = t.getAttribute(T);
                if (o) {
                    e = o, n = t;
                    break
                }
                if (!(t = t.parentNode)) break
            }
            return e && !/^[\w\-\.\/]+$/.test(e) && (e = "0"), {spm_c: e, el: n}
        }

        function f(t, e) {
            var n = parent !== self;
            if (!n && e) return [t, e].join(".");
            if (t && e) return t + ".i" + e;
            var o = window.g_SPM || (window.g_SPM = {}), a = o.spm_d_for_ad || {};
            return "number" == typeof a[t] ? a[t]++ : a[t] = 0, o.spm_d_for_ad = a, t + ".i" + a[t]
        }

        function d(t) {
            var e;
            return t && (e = t.match(/&?\bspm=([^&#]*)/)) ? e[1] : ""
        }

        var _ = n(17), h = n(9), m = n(18), v = n(28), b = n(26), y = n(106), w = n(107), x = "BODY", j = "HTML",
            T = "data-spm", P = "data-spm-click", S = "data-auto-spmd", A = "data-spm-anchor-id";
        e.getGlobalSPMId = a, e.spm_isSPMAnchorIdMatch = r, e.spm_updateHrefWithSPMId = i, e.spm_writeHref = s, e.spm_anchorEnsureSPMId_inHref = u, e.getElDataSpm = c, e.spm_getAnchor4thId_spm_d = l, e.spm_getModuleLinks = p, e.spm_spmGetParentSPMId = g, e.get_spm_for_ad = f, e.spm_getParamForAD = function (t) {
            var e = v.tryToGetAttribute(t, A);
            if (!e) {
                var n = a(), o = t.parentNode;
                if (!o) return "";
                var r = c(t) || {}, i = r.locaid || "", s = t.getAttribute(T) || i, u = g(o), l = u.spm_c || 0;
                l && l.indexOf(".") !== -1 && (l = l.split("."), l = l[l.length - 1]), e = f(n + "." + l, s)
            }
            return e
        }, e.spm_initSPMModule = function (t, e, n, i) {
            var s;
            if (e = e || t.getAttribute("data-spm") || "") {
                var g = p(t, i);
                if (0 !== g.length) {
                    var f = e.split("."), d = h.isStartWith(e, "110") && 3 == f.length;
                    d && (s = f[2], f[2] = "w" + (s || "0"), e = f.join("."));
                    var _ = a();
                    if (_ && _.match(/^[\w\-\*]+(\.[\w\-\*\/]+)?$/)) if (h.isContain(e, ".")) {
                        if (!h.isStartWith(e, _)) {
                            var m = _.split(".");
                            f = e.split(".");
                            for (var b = 0; b < m.length; b++) f[b] = m[b];
                            e = f.join(".")
                        }
                    } else h.isContain(_, ".") || (_ += ".0"), e = _ + "." + e;
                    if (e.match && e.match(/^[\w\-\*]+\.[\w\-\*\/]+\.[\w\-\*\/]+$/)) {
                        for (var w = "data-auto-spmd-max-idx", x = "data-spm-max-idx", j = i ? w : x, T = parseInt(v.tryToGetAttribute(t, j)) || 0, S = 0; S < g.length; S++) {
                            var k = g[S], E = y.tryToGetHref(k), M = v.tryToGetAttribute(k, P);
                            if (i || E || M) {
                                d && k.setAttribute("data-spm-wangpu-module-id", s);
                                var U = k.getAttribute(A);
                                if (U && r(U)) u(k, U, n); else {
                                    var I, C, N = o(k.parentNode);
                                    N.a_spm_ab ? (C = N.a_spm_ab, I = N.ab_idx) : (C = void 0, T++, I = T);
                                    var O, V = c(k) || {}, G = V.locaid || "";
                                    G ? O = G : (O = l(k) || I, i && (O = "at" + ((h.isNumber(O) ? 1e3 : "") + O))), U = C ? e + "-" + C + "." + O : e + "." + O, u(k, U, n)
                                }
                            }
                        }
                        t.setAttribute(j, T)
                    }
                }
            }
        }, e.spm_dealNoneSPMLink = function (t, e) {
            var n = goldlog.getMetaInfo("aplus-getspmcd"), o = a(), r = y.tryToGetHref(t), i = d(r), c = null,
                p = o && 2 == o.split(".").length;
            if (p) {
                var g;
                return "function" == typeof n && (g = n(t, null, o)), c = g && "0" !== g.spm_c ? [o, g.spm_c, g.spm_d] : [o, 0, l(t) || 0], void u(t, c.join("."), e)
            }
            r && i && (r = r.replace(/&?\bspm=[^&#]*/g, "").replace(/&{2,}/g, "&").replace(/\?&/, "?").replace(/\?$/, "").replace(/\?#/, "#"), s(t, r))
        }
    }, function (t, e, n) {
        "use strict";
        var o = n(19);
        e.tryToGetHref = function (t) {
            var e;
            try {
                e = o.trim(t.getAttribute("href", 2))
            } catch (t) {
            }
            return e || ""
        }
    }, function (t, e, n) {
        "use strict";

        function o(t) {
            return !!t && !!t.match(/^[^\?]*\balipay\.(?:com|net)\b/i)
        }

        function a(t) {
            return !!t && !!t.match(/^[^\?]*\balipay\.(?:com|net)\/.*\?.*\bsign=.*/i)
        }

        function r(t) {
            var e = location.href;
            return t && e.split("#")[0] === t.split("#")[0]
        }

        function i(t) {
            for (var e; (t = t.parentNode) && "BODY" !== t.tagName;) if (e = u.tryToGetAttribute(t, f)) return e;
            return ""
        }

        function s(t) {
            for (var e = ["mclick.simba.taobao.com", "click.simba.taobao.com", "click.tanx.com", "click.mz.simba.taobao.com", "click.tz.simba.taobao.com", "redirect.simba.taobao.com", "rdstat.tanx.com", "stat.simba.taobao.com", "s.click.taobao.com"], n = 0; n < e.length; n++) if (t.indexOf(e[n]) !== -1) return !0;
            return !1
        }

        var u = n(28), c = n(9), l = n(106), p = n(26), g = n(21), f = "data-spm-protocol";
        e.is_ignore_spm = function (t) {
            var e = p.getGoldlogVal("_$") || {}, n = e.meta_info || {}, d = l.tryToGetHref(t), _ = i(t),
                h = u.tryToGetAttribute(t, f), m = "i" === (h || _ || n.spm_protocol);
            if (!d || s(d)) return !0;
            var v = r(d) || g.isStartWithProtocol(d.toLowerCase()), b = o(d) || a(d), y = v || b;
            return !(m || !c.isStartWith(d, "#") && !y) || m
        }
    }, function (t, e, n) {
        "use strict";

        function o(t, e, n) {
            var o = u.parseSemicolonContent(e, {}, !0), a = o.gostr || "", r = o.locaid || "",
                g = t.getAttribute("data-spm") || r, f = "CLK", d = o.gokey || "", _ = p.spm_getSPMParam(t),
                h = [_.a, _.b, _.c, g].join("."), m = a + "." + h;
            0 !== m.indexOf("/") && (m = "/" + m);
            var v = [], b = ["gostr", "locaid", "gmkey", "gokey", "spm-cnt", "cna"];
            for (var y in o) o.hasOwnProperty(y) && c.indexof(b, y) === -1 && v.push(y + "=" + o[y]);
            v.push("_g_et=" + n), v.push("autosend=1"), d && v.length > 0 && (d += "&"), d += v.length > 0 ? v.join("&") : "", goldlog && s.isFunction(goldlog.recordUdata) ? goldlog.recordUdata(m, f, d, "GET", function () {
            }) : l.logger({msg: "goldlog.recordUdata is not function!"}), i.tryToSetAttribute(t, "data-spm-anchor-id", h)
        }

        function a(t, e) {
            var n = e;
            window.g_SPM && (g_SPM._current_spm = p.spm_getSPMParam(e));
            for (var a; e && "HTML" !== e.tagName;) {
                a = i.tryToGetAttribute(e, "data-spm-click");
                {
                    if (a) {
                        o(e, a, "mousedown" === t.type ? t.type : "tap");
                        break
                    }
                    e = e.parentNode
                }
            }
            if (!a) {
                var r = g.getGlobalSPMId(), s = goldlog.getMetaInfo("aplus-getspmcd");
                "function" == typeof s && s(n, t, r)
            }
        }

        var r = n(79), i = n(28), s = n(9), u = n(18), c = n(24), l = n(23), p = n(104), g = n(105);
        e.run = function (t) {
            t && t.isTouchEnabled ? r.on(document, "tap", a) : r.on(document, "mousedown", a)
        }
    }, function (t, e, n) {
        "use strict";

        function o() {
            for (var t = document.getElementsByTagName("iframe"), e = 0; e < t.length; e++) {
                var n = t[e], o = r.tryToGetAttribute(n, "data-spm-src");
                if (!n.src && o) {
                    var a = s.spm_getSPMParam(n);
                    if (a) {
                        var u = [a.a, a.b, a.c, a.d];
                        a.e && u.push(a.e), a = u.join("."), n.src = i.spm_updateHrefWithSPMId(o, a)
                    } else n.src = o
                }
            }
        }

        function a() {
            function t() {
                e++, e > 10 && (n = 3e3), o(), setTimeout(t, n)
            }

            var e = 0, n = 500;
            t()
        }

        var r = n(28), i = n(105), s = n(104);
        e.run = function (t) {
            t && !t.isTerminal && a()
        }
    }, function (t, e, n) {
        "use strict";

        function o(t, e) {
            for (var n, o = window; e && (n = e.tagName);) {
                if ("A" === n || "AREA" === n) {
                    r.spm_spmAnchorChk(e, !1);
                    var a = o.g_SPM || (o.g_SPM = {}), i = a._current_spm = r.spm_getSPMParam(e), s = [];
                    try {
                        s = [i.a, i.b, i.c, i.d];
                        var u = i.e || goldlog.pvid || "";
                        u && s.push(u)
                    } catch (t) {
                    }
                    break
                }
                if ("BODY" == n || "HTML" == n) break;
                e = e.parentNode
            }
        }

        var a = n(79), r = n(104);
        e.run = function (t) {
            var e = document;
            t && t.isTouchEnabled ? a.on(e, "tapSpm", o) : (a.on(e, "mousedown", o), a.on(e, "keydown", o))
        }
    }, function (t, e, n) {
        "use strict";

        function o(t, e) {
            if (e || (e = p), p.evaluate) return e.evaluate(t, p, null, 9, null).singleNodeValue;
            for (var n, a = t.split("/"); !n && a.length > 0;) n = a.shift();
            var r, i = /^.+?\[@id='(.+?)']$/i, s = /^(.+?)\[(\d+)]$/i;
            return (r = n.match(i)) ? e = e.getElementById(r[1]) : (r = n.match(s)) && (e = e.getElementsByTagName(r[1])[parseInt(r[2]) - 1]), e ? 0 === a.length ? e : o(a.join("/"), e) : null
        }

        function a() {
            var t = {};
            for (var e in l) if (l.hasOwnProperty(e)) {
                var n = o(e);
                if (n) {
                    t[e] = 1;
                    var a = l[e], r = "A" === n.tagName ? a.spmd : a.spmc;
                    s.tryToSetAttribute(n, "data-spm", r || "")
                }
            }
            for (var i in t) t.hasOwnProperty(i) && delete l[i]
        }

        function r() {
            if (!c && g.spmData) {
                c = !0;
                var t = g.spmData.data;
                if (t && i.isArray(t)) {
                    for (var e = 0; e < t.length; e++) {
                        var n = t[e], o = n.xpath;
                        o = o.replace(/^id\('(.+?)'\)(.*)/g, "//*[@id='$1']$2"), l[o] = {spmc: n.spmc, spmd: n.spmd}
                    }
                    a()
                }
            }
        }

        var i = n(9), s = n(28), u = n(79), c = !1, l = {}, p = document, g = window;
        e.wh_updateXPathElements = a, e.init_wh = r, e.run = function () {
            u.DOMReady(function () {
                r()
            })
        }
    }, function (t, e, n) {
        "use strict";

        function o() {
            var t, e = l.getParamFromUrl("utparamcnt", location.href);
            if (e) try {
                t = e = JSON.parse(decodeURIComponent(e))
            } catch (t) {
            }
            return t
        }

        function a() {
            var t, e = f["aplus-utparam"];
            if (e) if ("object" == typeof e) t = e; else try {
                t = JSON.parse(e)
            } catch (t) {
            }
            return t
        }

        var r = n(51), i = n(52), s = n(38), u = n(55), c = n(9), l = n(50), p = n(4), g = n(27), f = g.getInfo(),
            d = "complete";
        e.initGoldlog = function (t) {
            var e = window.goldlog || (window.goldlog = {}), n = p.goldlog_path.run.create();
            e._ready_time = (new Date).getTime();
            for (var l in n) e[l] = n[l];
            var g = /TB\-PD/i.test(navigator.userAgent), _ = e._$ = e._$ || {}, h = o(), m = a();
            return "object" == typeof h && (m && (h = c.assign(h, m)), f["aplus-utparam"] = h), _.meta_info = f, _.is_terminal = "aplus_wap" === p.script_name || g || "1" == f["aplus-terminal"], _.send_pv_count = 0, _.status = d, _.script_name = p.script_name, _.spm = {data: {}}, _.page_referrer = r.getRefer(), _.pageLoadTime = (new Date).getTime(), e.lver = p.lver, e.nameStorage = i.nameStorage, u.haveNativeFlagInUA(),
                s.doPubMsg(["goldlogReady", d]), s.doCachePubs(["goldlogReady", d]), t.init(), e
        }
    }]);/*! 2021-05-13 17:41:53 v8.15.6 */
    !function (t) {
        function e(n) {
            if (r[n]) return r[n].exports;
            var a = r[n] = {exports: {}, id: n, loaded: !1};
            return t[n].call(a.exports, a, a.exports, e), a.loaded = !0, a.exports
        }

        var r = {};
        return e.m = t, e.c = r, e.p = "", e(0)
    }([function (t, e) {
        "use strict";
        !function () {
            function t(t, e, r) {
                t[_]((h ? "on" : "") + e, function (t) {
                    t = t || s.event;
                    var e = t.target || t.srcElement;
                    r(t, e)
                }, !1)
            }

            function e() {
                return /&?\bspm=[^&#]*/.test(location.href) ? location.href.match(/&?\bspm=[^&#]*/gi)[0].split("=")[1] : ""
            }

            function r(t, e) {
                if (t && /&?\bspm=[^&#]*/.test(t) && (t = t.replace(/&?\bspm=[^&#]*/g, "").replace(/&{2,}/g, "&").replace(/\?&/, "?").replace(/\?$/, "")), !e) return t;
                var r, n, a, i, o, c, p, s = "&";
                if (t.indexOf("#") != -1 && (a = t.split("#"), t = a.shift(), n = a.join("#")), i = t.split("?"), o = i.length - 1, a = i[0].split("//"), a = a[a.length - 1].split("/"), c = a.length > 1 ? a.pop() : "", o > 0 && (r = i.pop(), t = i.join("?")), r && o > 1 && r.indexOf("&") == -1 && r.indexOf("%") != -1 && (s = "%26"), t = t + "?spm=" + e + (r ? s + r : "") + (n ? "#" + n : ""), p = c.indexOf(".") > -1 ? c.split(".").pop().toLowerCase() : "") {
                    if ({png: 1, jpg: 1, jpeg: 1, gif: 1, bmp: 1, swf: 1}.hasOwnProperty(p)) return 0;
                    !r && o <= 1 && (n || {htm: 1, html: 1, php: 1}.hasOwnProperty(p) || (t += "&file=" + c))
                }
                return t
            }

            function n(t) {
                function e(t) {
                    return t = t.replace(/refpos[=(%3D)]\w*/gi, c).replace(i, "%3D" + n + "%26" + a.replace("=", "%3D")).replace(o, n), a.length > 0 && (t += "&" + a), t
                }

                var r = window.location.href, n = r.match(/mm_\d{0,24}_\d{0,24}_\d{0,24}/i),
                    a = r.match(/[&\?](pvid=[^&]*)/i), i = new RegExp("%3Dmm_\\d+_\\d+_\\d+", "ig"),
                    o = new RegExp("mm_\\d+_\\d+_\\d+", "ig");
                a = a && a[1] ? a[1] : "";
                var c = r.match(/(refpos=(\d{0,24}_\d{0,24}_\d{0,24})?(,[a-z]+)?)(,[a-z]+)?/i);
                return c = c && c[0] ? c[0] : "", n ? (n = n[0], e(t)) : t
            }

            function a(e) {
                var r = s.KISSY;
                r ? r.ready(e) : s.jQuery ? jQuery(m).ready(e) : "complete" === m.readyState ? e() : t(s, "load", e)
            }

            function i(t, e) {
                return t && t.getAttribute ? t.getAttribute(e) || "" : ""
            }

            function o(t) {
                if (t) {
                    var e, r = g.length;
                    for (e = 0; e < r; e++) if (t.indexOf(g[e]) > -1) return !0;
                    return !1
                }
            }

            function c(t, e) {
                if (t && /&?\bspm=[^&#]*/.test(t) && (t = t.replace(/&?\bspm=[^&#]*/g, "").replace(/&{2,}/g, "&").replace(/\?&/, "?").replace(/\?$/, "")), !e) return t;
                var r, n, a, i, o, c, p, s = "&";
                if (t.indexOf("#") != -1 && (a = t.split("#"), t = a.shift(), n = a.join("#")), i = t.split("?"), o = i.length - 1, a = i[0].split("//"), a = a[a.length - 1].split("/"), c = a.length > 1 ? a.pop() : "", o > 0 && (r = i.pop(), t = i.join("?")), r && o > 1 && r.indexOf("&") == -1 && r.indexOf("%") != -1 && (s = "%26"), t = t + "?spm=" + e + (r ? s + r : "") + (n ? "#" + n : ""), p = c.indexOf(".") > -1 ? c.split(".").pop().toLowerCase() : "") {
                    if ({png: 1, jpg: 1, jpeg: 1, gif: 1, bmp: 1, swf: 1}.hasOwnProperty(p)) return 0;
                    !r && o <= 1 && (n || {
                        htm: 1,
                        html: 1,
                        shtml: 1,
                        php: 1
                    }.hasOwnProperty(p) || (t += "&__file=" + c))
                }
                return t
            }

            function p(t) {
                if (o(t.href)) {
                    var r = i(t, u);
                    if (!r) {
                        var n = l()(t), a = [n.a, n.b, n.c, n.d].join(".");
                        n.e && (n += "." + n.e), d && (a = [n.a || "0", n.b || "0", n.c || "0", n.d || "0"].join("."), a = (e() || "0.0.0.0.0") + "_" + a), t.href = c(t.href, a), t.setAttribute(u, a)
                    }
                }
            }

            var s = window, m = document;
            if (1 !== s.aplus_spmact) {
                s.aplus_spmact = 1;
                var f = function () {
                    return {a: 0, b: 0, c: 0, d: 0, e: 0}
                }, l = function () {
                    return s.g_SPM && s.g_SPM.getParam ? s.g_SPM.getParam : f
                }, d = !0;
                try {
                    d = self.location != top.location
                } catch (t) {
                }
                var u = "data-spm-act-id",
                    g = ["mclick.simba.taobao.com", "click.simba.taobao.com", "click.tanx.com", "click.mz.simba.taobao.com", "click.tz.simba.taobao.com", "redirect.simba.taobao.com", "rdstat.tanx.com", "stat.simba.taobao.com", "s.click.taobao.com"],
                    h = !!m.attachEvent, b = "attachEvent", v = "addEventListener", _ = h ? b : v;
                t(m, "mousedown", function (t, e) {
                    for (var r, n = 0; e && (r = e.tagName) && n < 5;) {
                        if ("A" == r || "AREA" == r) {
                            p(e);
                            break
                        }
                        if ("BODY" == r || "HTML" == r) break;
                        e = e.parentNode, n++
                    }
                }), a(function () {
                    for (var t, a, o = document.getElementsByTagName("iframe"), c = 0; c < o.length; c++) {
                        t = i(o[c], "mmsrc"), a = i(o[c], "mmworked");
                        var p = l()(o[c]), s = [p.a || "0", p.b || "0", p.c || "0", p.d || "0", p.e || "0"].join(".");
                        t && !a ? (d && (s = [p.a || "0", p.b || "0", p.c || "0", p.d || "0"].join("."), s = e() + "_" + s), o[c].src = r(n(t), s), o[c].setAttribute("mmworked", "mmworked")) : o[c].setAttribute(u, s)
                    }
                })
            }
        }()
    }]);</script>
    <script type="text/javascript">
        config = window.parent.config;
        window.addEventListener('hashchange', function () {
            window.location.reload(true);
        });
    </script>
    <style type="text/css">/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/


    .p-Widget {
        box-sizing: border-box;
        position: relative;
        overflow: hidden;
        cursor: default;
    }


    .p-Widget.p-mod-hidden {
        display: none !important;
    }
    </style>
    <style type="text/css">/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/


    .p-CommandPalette {
        display: flex;
        flex-direction: column;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
    }


    .p-CommandPalette-search {
        flex: 0 0 auto;
    }


    .p-CommandPalette-content {
        flex: 1 1 auto;
        margin: 0;
        padding: 0;
        min-height: 0;
        overflow: auto;
        list-style-type: none;
    }


    .p-CommandPalette-header {
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
    }


    .p-CommandPalette-item {
        display: flex;
        flex-direction: row;
    }


    .p-CommandPalette-itemIcon {
        flex: 0 0 auto;
    }


    .p-CommandPalette-itemContent {
        flex: 1 1 auto;
        overflow: hidden;
    }


    .p-CommandPalette-itemShortcut {
        flex: 0 0 auto;
    }


    .p-CommandPalette-itemLabel {
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
    }
    </style>
    <style type="text/css">/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/


    .p-DockPanel {
        z-index: 0;
    }


    .p-DockPanel-widget {
        z-index: 0;
    }


    .p-DockPanel-tabBar {
        z-index: 1;
    }


    .p-DockPanel-handle {
        z-index: 2;
    }


    .p-DockPanel-handle.p-mod-hidden {
        display: none !important;
    }


    .p-DockPanel-handle:after {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        content: '';
    }


    .p-DockPanel-handle[data-orientation='horizontal'] {
        cursor: ew-resize;
    }


    .p-DockPanel-handle[data-orientation='vertical'] {
        cursor: ns-resize;
    }


    .p-DockPanel-handle[data-orientation='horizontal']:after {
        left: 50%;
        min-width: 8px;
        transform: translateX(-50%);
    }


    .p-DockPanel-handle[data-orientation='vertical']:after {
        top: 50%;
        min-height: 8px;
        transform: translateY(-50%);
    }


    .p-DockPanel-overlay {
        z-index: 3;
        box-sizing: border-box;
        pointer-events: none;
    }


    .p-DockPanel-overlay.p-mod-hidden {
        display: none !important;
    }
    </style>
    <style type="text/css">/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/


    .p-Menu {
        z-index: 10000;
        position: absolute;
        white-space: nowrap;
        overflow-x: hidden;
        overflow-y: auto;
        outline: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
    }


    .p-Menu-content {
        margin: 0;
        padding: 0;
        display: table;
        list-style-type: none;
    }


    .p-Menu-item {
        display: table-row;
    }


    .p-Menu-item.p-mod-hidden,
    .p-Menu-item.p-mod-collapsed {
        display: none !important;
    }


    .p-Menu-itemIcon,
    .p-Menu-itemSubmenuIcon {
        display: table-cell;
        text-align: center;
    }


    .p-Menu-itemLabel {
        display: table-cell;
        text-align: left;
    }


    .p-Menu-itemShortcut {
        display: table-cell;
        text-align: right;
    }
    </style>
    <style type="text/css">/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/


    .p-MenuBar {
        outline: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
    }


    .p-MenuBar-content {
        margin: 0;
        padding: 0;
        display: flex;
        flex-direction: row;
        list-style-type: none;
    }


    .p-MenuBar-item {
        box-sizing: border-box;
    }


    .p-MenuBar-itemIcon,
    .p-MenuBar-itemLabel {
        display: inline-block;
    }
    </style>
    <style type="text/css">/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/


    .p-ScrollBar {
        display: flex;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
    }


    .p-ScrollBar[data-orientation='horizontal'] {
        flex-direction: row;
    }


    .p-ScrollBar[data-orientation='vertical'] {
        flex-direction: column;
    }


    .p-ScrollBar-button {
        box-sizing: border-box;
        flex: 0 0 auto;
    }


    .p-ScrollBar-track {
        box-sizing: border-box;
        position: relative;
        overflow: hidden;
        flex: 1 1 auto;
    }


    .p-ScrollBar-thumb {
        box-sizing: border-box;
        position: absolute;
    }
    </style>
    <style type="text/css">/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/


    .p-SplitPanel-child {
        z-index: 0;
    }


    .p-SplitPanel-handle {
        z-index: 1;
    }


    .p-SplitPanel-handle.p-mod-hidden {
        display: none !important;
    }


    .p-SplitPanel-handle:after {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        content: '';
    }


    .p-SplitPanel[data-orientation='horizontal'] > .p-SplitPanel-handle {
        cursor: ew-resize;
    }


    .p-SplitPanel[data-orientation='vertical'] > .p-SplitPanel-handle {
        cursor: ns-resize;
    }


    .p-SplitPanel[data-orientation='horizontal'] > .p-SplitPanel-handle:after {
        left: 50%;
        min-width: 8px;
        transform: translateX(-50%);
    }


    .p-SplitPanel[data-orientation='vertical'] > .p-SplitPanel-handle:after {
        top: 50%;
        min-height: 8px;
        transform: translateY(-50%);
    }
    </style>
    <style type="text/css">/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/


    .p-TabBar {
        display: flex;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
    }


    .p-TabBar[data-orientation='horizontal'] {
        flex-direction: row;
    }


    .p-TabBar[data-orientation='vertical'] {
        flex-direction: column;
    }


    .p-TabBar-content {
        margin: 0;
        padding: 0;
        display: flex;
        flex: 1 1 auto;
        list-style-type: none;
    }


    .p-TabBar[data-orientation='horizontal'] > .p-TabBar-content {
        flex-direction: row;
    }


    .p-TabBar[data-orientation='vertical'] > .p-TabBar-content {
        flex-direction: column;
    }


    .p-TabBar-tab {
        display: flex;
        flex-direction: row;
        box-sizing: border-box;
        overflow: hidden;
    }


    .p-TabBar-tabIcon,
    .p-TabBar-tabCloseIcon {
        flex: 0 0 auto;
    }


    .p-TabBar-tabLabel {
        flex: 1 1 auto;
        overflow: hidden;
        white-space: nowrap;
    }


    .p-TabBar-tab.p-mod-hidden {
        display: none !important;
    }


    .p-TabBar.p-mod-dragging .p-TabBar-tab {
        position: relative;
    }


    .p-TabBar.p-mod-dragging[data-orientation='horizontal'] .p-TabBar-tab {
        left: 0;
        transition: left 150ms ease;
    }


    .p-TabBar.p-mod-dragging[data-orientation='vertical'] .p-TabBar-tab {
        top: 0;
        transition: top 150ms ease;
    }


    .p-TabBar.p-mod-dragging .p-TabBar-tab.p-mod-dragging {
        transition: none;
    }
    </style>
    <style type="text/css">/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/


    .p-TabPanel-tabBar {
        z-index: 1;
    }


    .p-TabPanel-stackedPanel {
        z-index: 0;
    }
    </style>
    <style type="text/css">/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
    </style>
    <style type="text/css">/*!
 *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
    @font-face {
        font-family: 'FontAwesome';
        font-weight: normal;
        font-style: normal
    }

    .fa {
        display: inline-block;
        font: normal normal normal 14px/1 FontAwesome;
        font-size: inherit;
        text-rendering: auto;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale
    }

    .fa-lg {
        font-size: 1.33333333em;
        line-height: .75em;
        vertical-align: -15%
    }

    .fa-2x {
        font-size: 2em
    }

    .fa-3x {
        font-size: 3em
    }

    .fa-4x {
        font-size: 4em
    }

    .fa-5x {
        font-size: 5em
    }

    .fa-fw {
        width: 1.28571429em;
        text-align: center
    }

    .fa-ul {
        padding-left: 0;
        margin-left: 2.14285714em;
        list-style-type: none
    }

    .fa-ul > li {
        position: relative
    }

    .fa-li {
        position: absolute;
        left: -2.14285714em;
        width: 2.14285714em;
        top: .14285714em;
        text-align: center
    }

    .fa-li.fa-lg {
        left: -1.85714286em
    }

    .fa-border {
        padding: .2em .25em .15em;
        border: solid .08em #eee;
        border-radius: .1em
    }

    .fa-pull-left {
        float: left
    }

    .fa-pull-right {
        float: right
    }

    .fa.fa-pull-left {
        margin-right: .3em
    }

    .fa.fa-pull-right {
        margin-left: .3em
    }

    .pull-right {
        float: right
    }

    .pull-left {
        float: left
    }

    .fa.pull-left {
        margin-right: .3em
    }

    .fa.pull-right {
        margin-left: .3em
    }

    .fa-spin {
        -webkit-animation: fa-spin 2s infinite linear;
        animation: fa-spin 2s infinite linear
    }

    .fa-pulse {
        -webkit-animation: fa-spin 1s infinite steps(8);
        animation: fa-spin 1s infinite steps(8)
    }

    @-webkit-keyframes fa-spin {
        0% {
            -webkit-transform: rotate(0deg);
            transform: rotate(0deg)
        }
        100% {
            -webkit-transform: rotate(359deg);
            transform: rotate(359deg)
        }
    }

    @keyframes fa-spin {
        0% {
            -webkit-transform: rotate(0deg);
            transform: rotate(0deg)
        }
        100% {
            -webkit-transform: rotate(359deg);
            transform: rotate(359deg)
        }
    }

    .fa-rotate-90 {
        -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
        -webkit-transform: rotate(90deg);
        -ms-transform: rotate(90deg);
        transform: rotate(90deg)
    }

    .fa-rotate-180 {
        -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
        -webkit-transform: rotate(180deg);
        -ms-transform: rotate(180deg);
        transform: rotate(180deg)
    }

    .fa-rotate-270 {
        -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
        -webkit-transform: rotate(270deg);
        -ms-transform: rotate(270deg);
        transform: rotate(270deg)
    }

    .fa-flip-horizontal {
        -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
        -webkit-transform: scale(-1, 1);
        -ms-transform: scale(-1, 1);
        transform: scale(-1, 1)
    }

    .fa-flip-vertical {
        -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
        -webkit-transform: scale(1, -1);
        -ms-transform: scale(1, -1);
        transform: scale(1, -1)
    }

    :root .fa-rotate-90, :root .fa-rotate-180, :root .fa-rotate-270, :root .fa-flip-horizontal, :root .fa-flip-vertical {
        filter: none
    }

    .fa-stack {
        position: relative;
        display: inline-block;
        width: 2em;
        height: 2em;
        line-height: 2em;
        vertical-align: middle
    }

    .fa-stack-1x, .fa-stack-2x {
        position: absolute;
        left: 0;
        width: 100%;
        text-align: center
    }

    .fa-stack-1x {
        line-height: inherit
    }

    .fa-stack-2x {
        font-size: 2em
    }

    .fa-inverse {
        color: #fff
    }

    .fa-glass:before {
        content: "\F000"
    }

    .fa-music:before {
        content: "\F001"
    }

    .fa-search:before {
        content: "\F002"
    }

    .fa-envelope-o:before {
        content: "\F003"
    }

    .fa-heart:before {
        content: "\F004"
    }

    .fa-star:before {
        content: "\F005"
    }

    .fa-star-o:before {
        content: "\F006"
    }

    .fa-user:before {
        content: "\F007"
    }

    .fa-film:before {
        content: "\F008"
    }

    .fa-th-large:before {
        content: "\F009"
    }

    .fa-th:before {
        content: "\F00A"
    }

    .fa-th-list:before {
        content: "\F00B"
    }

    .fa-check:before {
        content: "\F00C"
    }

    .fa-remove:before, .fa-close:before, .fa-times:before {
        content: "\F00D"
    }

    .fa-search-plus:before {
        content: "\F00E"
    }

    .fa-search-minus:before {
        content: "\F010"
    }

    .fa-power-off:before {
        content: "\F011"
    }

    .fa-signal:before {
        content: "\F012"
    }

    .fa-gear:before, .fa-cog:before {
        content: "\F013"
    }

    .fa-trash-o:before {
        content: "\F014"
    }

    .fa-home:before {
        content: "\F015"
    }

    .fa-file-o:before {
        content: "\F016"
    }

    .fa-clock-o:before {
        content: "\F017"
    }

    .fa-road:before {
        content: "\F018"
    }

    .fa-download:before {
        content: "\F019"
    }

    .fa-arrow-circle-o-down:before {
        content: "\F01A"
    }

    .fa-arrow-circle-o-up:before {
        content: "\F01B"
    }

    .fa-inbox:before {
        content: "\F01C"
    }

    .fa-play-circle-o:before {
        content: "\F01D"
    }

    .fa-rotate-right:before, .fa-repeat:before {
        content: "\F01E"
    }

    .fa-refresh:before {
        content: "\F021"
    }

    .fa-list-alt:before {
        content: "\F022"
    }

    .fa-lock:before {
        content: "\F023"
    }

    .fa-flag:before {
        content: "\F024"
    }

    .fa-headphones:before {
        content: "\F025"
    }

    .fa-volume-off:before {
        content: "\F026"
    }

    .fa-volume-down:before {
        content: "\F027"
    }

    .fa-volume-up:before {
        content: "\F028"
    }

    .fa-qrcode:before {
        content: "\F029"
    }

    .fa-barcode:before {
        content: "\F02A"
    }

    .fa-tag:before {
        content: "\F02B"
    }

    .fa-tags:before {
        content: "\F02C"
    }

    .fa-book:before {
        content: "\F02D"
    }

    .fa-bookmark:before {
        content: "\F02E"
    }

    .fa-print:before {
        content: "\F02F"
    }

    .fa-camera:before {
        content: "\F030"
    }

    .fa-font:before {
        content: "\F031"
    }

    .fa-bold:before {
        content: "\F032"
    }

    .fa-italic:before {
        content: "\F033"
    }

    .fa-text-height:before {
        content: "\F034"
    }

    .fa-text-width:before {
        content: "\F035"
    }

    .fa-align-left:before {
        content: "\F036"
    }

    .fa-align-center:before {
        content: "\F037"
    }

    .fa-align-right:before {
        content: "\F038"
    }

    .fa-align-justify:before {
        content: "\F039"
    }

    .fa-list:before {
        content: "\F03A"
    }

    .fa-dedent:before, .fa-outdent:before {
        content: "\F03B"
    }

    .fa-indent:before {
        content: "\F03C"
    }

    .fa-video-camera:before {
        content: "\F03D"
    }

    .fa-photo:before, .fa-image:before, .fa-picture-o:before {
        content: "\F03E"
    }

    .fa-pencil:before {
        content: "\F040"
    }

    .fa-map-marker:before {
        content: "\F041"
    }

    .fa-adjust:before {
        content: "\F042"
    }

    .fa-tint:before {
        content: "\F043"
    }

    .fa-edit:before, .fa-pencil-square-o:before {
        content: "\F044"
    }

    .fa-share-square-o:before {
        content: "\F045"
    }

    .fa-check-square-o:before {
        content: "\F046"
    }

    .fa-arrows:before {
        content: "\F047"
    }

    .fa-step-backward:before {
        content: "\F048"
    }

    .fa-fast-backward:before {
        content: "\F049"
    }

    .fa-backward:before {
        content: "\F04A"
    }

    .fa-play:before {
        content: "\F04B"
    }

    .fa-pause:before {
        content: "\F04C"
    }

    .fa-stop:before {
        content: "\F04D"
    }

    .fa-forward:before {
        content: "\F04E"
    }

    .fa-fast-forward:before {
        content: "\F050"
    }

    .fa-step-forward:before {
        content: "\F051"
    }

    .fa-eject:before {
        content: "\F052"
    }

    .fa-chevron-left:before {
        content: "\F053"
    }

    .fa-chevron-right:before {
        content: "\F054"
    }

    .fa-plus-circle:before {
        content: "\F055"
    }

    .fa-minus-circle:before {
        content: "\F056"
    }

    .fa-times-circle:before {
        content: "\F057"
    }

    .fa-check-circle:before {
        content: "\F058"
    }

    .fa-question-circle:before {
        content: "\F059"
    }

    .fa-info-circle:before {
        content: "\F05A"
    }

    .fa-crosshairs:before {
        content: "\F05B"
    }

    .fa-times-circle-o:before {
        content: "\F05C"
    }

    .fa-check-circle-o:before {
        content: "\F05D"
    }

    .fa-ban:before {
        content: "\F05E"
    }

    .fa-arrow-left:before {
        content: "\F060"
    }

    .fa-arrow-right:before {
        content: "\F061"
    }

    .fa-arrow-up:before {
        content: "\F062"
    }

    .fa-arrow-down:before {
        content: "\F063"
    }

    .fa-mail-forward:before, .fa-share:before {
        content: "\F064"
    }

    .fa-expand:before {
        content: "\F065"
    }

    .fa-compress:before {
        content: "\F066"
    }

    .fa-plus:before {
        content: "\F067"
    }

    .fa-minus:before {
        content: "\F068"
    }

    .fa-asterisk:before {
        content: "\F069"
    }

    .fa-exclamation-circle:before {
        content: "\F06A"
    }

    .fa-gift:before {
        content: "\F06B"
    }

    .fa-leaf:before {
        content: "\F06C"
    }

    .fa-fire:before {
        content: "\F06D"
    }

    .fa-eye:before {
        content: "\F06E"
    }

    .fa-eye-slash:before {
        content: "\F070"
    }

    .fa-warning:before, .fa-exclamation-triangle:before {
        content: "\F071"
    }

    .fa-plane:before {
        content: "\F072"
    }

    .fa-calendar:before {
        content: "\F073"
    }

    .fa-random:before {
        content: "\F074"
    }

    .fa-comment:before {
        content: "\F075"
    }

    .fa-magnet:before {
        content: "\F076"
    }

    .fa-chevron-up:before {
        content: "\F077"
    }

    .fa-chevron-down:before {
        content: "\F078"
    }

    .fa-retweet:before {
        content: "\F079"
    }

    .fa-shopping-cart:before {
        content: "\F07A"
    }

    .fa-folder:before {
        content: "\F07B"
    }

    .fa-folder-open:before {
        content: "\F07C"
    }

    .fa-arrows-v:before {
        content: "\F07D"
    }

    .fa-arrows-h:before {
        content: "\F07E"
    }

    .fa-bar-chart-o:before, .fa-bar-chart:before {
        content: "\F080"
    }

    .fa-twitter-square:before {
        content: "\F081"
    }

    .fa-facebook-square:before {
        content: "\F082"
    }

    .fa-camera-retro:before {
        content: "\F083"
    }

    .fa-key:before {
        content: "\F084"
    }

    .fa-gears:before, .fa-cogs:before {
        content: "\F085"
    }

    .fa-comments:before {
        content: "\F086"
    }

    .fa-thumbs-o-up:before {
        content: "\F087"
    }

    .fa-thumbs-o-down:before {
        content: "\F088"
    }

    .fa-star-half:before {
        content: "\F089"
    }

    .fa-heart-o:before {
        content: "\F08A"
    }

    .fa-sign-out:before {
        content: "\F08B"
    }

    .fa-linkedin-square:before {
        content: "\F08C"
    }

    .fa-thumb-tack:before {
        content: "\F08D"
    }

    .fa-external-link:before {
        content: "\F08E"
    }

    .fa-sign-in:before {
        content: "\F090"
    }

    .fa-trophy:before {
        content: "\F091"
    }

    .fa-github-square:before {
        content: "\F092"
    }

    .fa-upload:before {
        content: "\F093"
    }

    .fa-lemon-o:before {
        content: "\F094"
    }

    .fa-phone:before {
        content: "\F095"
    }

    .fa-square-o:before {
        content: "\F096"
    }

    .fa-bookmark-o:before {
        content: "\F097"
    }

    .fa-phone-square:before {
        content: "\F098"
    }

    .fa-twitter:before {
        content: "\F099"
    }

    .fa-facebook-f:before, .fa-facebook:before {
        content: "\F09A"
    }

    .fa-github:before {
        content: "\F09B"
    }

    .fa-unlock:before {
        content: "\F09C"
    }

    .fa-credit-card:before {
        content: "\F09D"
    }

    .fa-feed:before, .fa-rss:before {
        content: "\F09E"
    }

    .fa-hdd-o:before {
        content: "\F0A0"
    }

    .fa-bullhorn:before {
        content: "\F0A1"
    }

    .fa-bell:before {
        content: "\F0F3"
    }

    .fa-certificate:before {
        content: "\F0A3"
    }

    .fa-hand-o-right:before {
        content: "\F0A4"
    }

    .fa-hand-o-left:before {
        content: "\F0A5"
    }

    .fa-hand-o-up:before {
        content: "\F0A6"
    }

    .fa-hand-o-down:before {
        content: "\F0A7"
    }

    .fa-arrow-circle-left:before {
        content: "\F0A8"
    }

    .fa-arrow-circle-right:before {
        content: "\F0A9"
    }

    .fa-arrow-circle-up:before {
        content: "\F0AA"
    }

    .fa-arrow-circle-down:before {
        content: "\F0AB"
    }

    .fa-globe:before {
        content: "\F0AC"
    }

    .fa-wrench:before {
        content: "\F0AD"
    }

    .fa-tasks:before {
        content: "\F0AE"
    }

    .fa-filter:before {
        content: "\F0B0"
    }

    .fa-briefcase:before {
        content: "\F0B1"
    }

    .fa-arrows-alt:before {
        content: "\F0B2"
    }

    .fa-group:before, .fa-users:before {
        content: "\F0C0"
    }

    .fa-chain:before, .fa-link:before {
        content: "\F0C1"
    }

    .fa-cloud:before {
        content: "\F0C2"
    }

    .fa-flask:before {
        content: "\F0C3"
    }

    .fa-cut:before, .fa-scissors:before {
        content: "\F0C4"
    }

    .fa-copy:before, .fa-files-o:before {
        content: "\F0C5"
    }

    .fa-paperclip:before {
        content: "\F0C6"
    }

    .fa-save:before, .fa-floppy-o:before {
        content: "\F0C7"
    }

    .fa-square:before {
        content: "\F0C8"
    }

    .fa-navicon:before, .fa-reorder:before, .fa-bars:before {
        content: "\F0C9"
    }

    .fa-list-ul:before {
        content: "\F0CA"
    }

    .fa-list-ol:before {
        content: "\F0CB"
    }

    .fa-strikethrough:before {
        content: "\F0CC"
    }

    .fa-underline:before {
        content: "\F0CD"
    }

    .fa-table:before {
        content: "\F0CE"
    }

    .fa-magic:before {
        content: "\F0D0"
    }

    .fa-truck:before {
        content: "\F0D1"
    }

    .fa-pinterest:before {
        content: "\F0D2"
    }

    .fa-pinterest-square:before {
        content: "\F0D3"
    }

    .fa-google-plus-square:before {
        content: "\F0D4"
    }

    .fa-google-plus:before {
        content: "\F0D5"
    }

    .fa-money:before {
        content: "\F0D6"
    }

    .fa-caret-down:before {
        content: "\F0D7"
    }

    .fa-caret-up:before {
        content: "\F0D8"
    }

    .fa-caret-left:before {
        content: "\F0D9"
    }

    .fa-caret-right:before {
        content: "\F0DA"
    }

    .fa-columns:before {
        content: "\F0DB"
    }

    .fa-unsorted:before, .fa-sort:before {
        content: "\F0DC"
    }

    .fa-sort-down:before, .fa-sort-desc:before {
        content: "\F0DD"
    }

    .fa-sort-up:before, .fa-sort-asc:before {
        content: "\F0DE"
    }

    .fa-envelope:before {
        content: "\F0E0"
    }

    .fa-linkedin:before {
        content: "\F0E1"
    }

    .fa-rotate-left:before, .fa-undo:before {
        content: "\F0E2"
    }

    .fa-legal:before, .fa-gavel:before {
        content: "\F0E3"
    }

    .fa-dashboard:before, .fa-tachometer:before {
        content: "\F0E4"
    }

    .fa-comment-o:before {
        content: "\F0E5"
    }

    .fa-comments-o:before {
        content: "\F0E6"
    }

    .fa-flash:before, .fa-bolt:before {
        content: "\F0E7"
    }

    .fa-sitemap:before {
        content: "\F0E8"
    }

    .fa-umbrella:before {
        content: "\F0E9"
    }

    .fa-paste:before, .fa-clipboard:before {
        content: "\F0EA"
    }

    .fa-lightbulb-o:before {
        content: "\F0EB"
    }

    .fa-exchange:before {
        content: "\F0EC"
    }

    .fa-cloud-download:before {
        content: "\F0ED"
    }

    .fa-cloud-upload:before {
        content: "\F0EE"
    }

    .fa-user-md:before {
        content: "\F0F0"
    }

    .fa-stethoscope:before {
        content: "\F0F1"
    }

    .fa-suitcase:before {
        content: "\F0F2"
    }

    .fa-bell-o:before {
        content: "\F0A2"
    }

    .fa-coffee:before {
        content: "\F0F4"
    }

    .fa-cutlery:before {
        content: "\F0F5"
    }

    .fa-file-text-o:before {
        content: "\F0F6"
    }

    .fa-building-o:before {
        content: "\F0F7"
    }

    .fa-hospital-o:before {
        content: "\F0F8"
    }

    .fa-ambulance:before {
        content: "\F0F9"
    }

    .fa-medkit:before {
        content: "\F0FA"
    }

    .fa-fighter-jet:before {
        content: "\F0FB"
    }

    .fa-beer:before {
        content: "\F0FC"
    }

    .fa-h-square:before {
        content: "\F0FD"
    }

    .fa-plus-square:before {
        content: "\F0FE"
    }

    .fa-angle-double-left:before {
        content: "\F100"
    }

    .fa-angle-double-right:before {
        content: "\F101"
    }

    .fa-angle-double-up:before {
        content: "\F102"
    }

    .fa-angle-double-down:before {
        content: "\F103"
    }

    .fa-angle-left:before {
        content: "\F104"
    }

    .fa-angle-right:before {
        content: "\F105"
    }

    .fa-angle-up:before {
        content: "\F106"
    }

    .fa-angle-down:before {
        content: "\F107"
    }

    .fa-desktop:before {
        content: "\F108"
    }

    .fa-laptop:before {
        content: "\F109"
    }

    .fa-tablet:before {
        content: "\F10A"
    }

    .fa-mobile-phone:before, .fa-mobile:before {
        content: "\F10B"
    }

    .fa-circle-o:before {
        content: "\F10C"
    }

    .fa-quote-left:before {
        content: "\F10D"
    }

    .fa-quote-right:before {
        content: "\F10E"
    }

    .fa-spinner:before {
        content: "\F110"
    }

    .fa-circle:before {
        content: "\F111"
    }

    .fa-mail-reply:before, .fa-reply:before {
        content: "\F112"
    }

    .fa-github-alt:before {
        content: "\F113"
    }

    .fa-folder-o:before {
        content: "\F114"
    }

    .fa-folder-open-o:before {
        content: "\F115"
    }

    .fa-smile-o:before {
        content: "\F118"
    }

    .fa-frown-o:before {
        content: "\F119"
    }

    .fa-meh-o:before {
        content: "\F11A"
    }

    .fa-gamepad:before {
        content: "\F11B"
    }

    .fa-keyboard-o:before {
        content: "\F11C"
    }

    .fa-flag-o:before {
        content: "\F11D"
    }

    .fa-flag-checkered:before {
        content: "\F11E"
    }

    .fa-terminal:before {
        content: "\F120"
    }

    .fa-code:before {
        content: "\F121"
    }

    .fa-mail-reply-all:before, .fa-reply-all:before {
        content: "\F122"
    }

    .fa-star-half-empty:before, .fa-star-half-full:before, .fa-star-half-o:before {
        content: "\F123"
    }

    .fa-location-arrow:before {
        content: "\F124"
    }

    .fa-crop:before {
        content: "\F125"
    }

    .fa-code-fork:before {
        content: "\F126"
    }

    .fa-unlink:before, .fa-chain-broken:before {
        content: "\F127"
    }

    .fa-question:before {
        content: "\F128"
    }

    .fa-info:before {
        content: "\F129"
    }

    .fa-exclamation:before {
        content: "\F12A"
    }

    .fa-superscript:before {
        content: "\F12B"
    }

    .fa-subscript:before {
        content: "\F12C"
    }

    .fa-eraser:before {
        content: "\F12D"
    }

    .fa-puzzle-piece:before {
        content: "\F12E"
    }

    .fa-microphone:before {
        content: "\F130"
    }

    .fa-microphone-slash:before {
        content: "\F131"
    }

    .fa-shield:before {
        content: "\F132"
    }

    .fa-calendar-o:before {
        content: "\F133"
    }

    .fa-fire-extinguisher:before {
        content: "\F134"
    }

    .fa-rocket:before {
        content: "\F135"
    }

    .fa-maxcdn:before {
        content: "\F136"
    }

    .fa-chevron-circle-left:before {
        content: "\F137"
    }

    .fa-chevron-circle-right:before {
        content: "\F138"
    }

    .fa-chevron-circle-up:before {
        content: "\F139"
    }

    .fa-chevron-circle-down:before {
        content: "\F13A"
    }

    .fa-html5:before {
        content: "\F13B"
    }

    .fa-css3:before {
        content: "\F13C"
    }

    .fa-anchor:before {
        content: "\F13D"
    }

    .fa-unlock-alt:before {
        content: "\F13E"
    }

    .fa-bullseye:before {
        content: "\F140"
    }

    .fa-ellipsis-h:before {
        content: "\F141"
    }

    .fa-ellipsis-v:before {
        content: "\F142"
    }

    .fa-rss-square:before {
        content: "\F143"
    }

    .fa-play-circle:before {
        content: "\F144"
    }

    .fa-ticket:before {
        content: "\F145"
    }

    .fa-minus-square:before {
        content: "\F146"
    }

    .fa-minus-square-o:before {
        content: "\F147"
    }

    .fa-level-up:before {
        content: "\F148"
    }

    .fa-level-down:before {
        content: "\F149"
    }

    .fa-check-square:before {
        content: "\F14A"
    }

    .fa-pencil-square:before {
        content: "\F14B"
    }

    .fa-external-link-square:before {
        content: "\F14C"
    }

    .fa-share-square:before {
        content: "\F14D"
    }

    .fa-compass:before {
        content: "\F14E"
    }

    .fa-toggle-down:before, .fa-caret-square-o-down:before {
        content: "\F150"
    }

    .fa-toggle-up:before, .fa-caret-square-o-up:before {
        content: "\F151"
    }

    .fa-toggle-right:before, .fa-caret-square-o-right:before {
        content: "\F152"
    }

    .fa-euro:before, .fa-eur:before {
        content: "\F153"
    }

    .fa-gbp:before {
        content: "\F154"
    }

    .fa-dollar:before, .fa-usd:before {
        content: "\F155"
    }

    .fa-rupee:before, .fa-inr:before {
        content: "\F156"
    }

    .fa-cny:before, .fa-rmb:before, .fa-yen:before, .fa-jpy:before {
        content: "\F157"
    }

    .fa-ruble:before, .fa-rouble:before, .fa-rub:before {
        content: "\F158"
    }

    .fa-won:before, .fa-krw:before {
        content: "\F159"
    }

    .fa-bitcoin:before, .fa-btc:before {
        content: "\F15A"
    }

    .fa-file:before {
        content: "\F15B"
    }

    .fa-file-text:before {
        content: "\F15C"
    }

    .fa-sort-alpha-asc:before {
        content: "\F15D"
    }

    .fa-sort-alpha-desc:before {
        content: "\F15E"
    }

    .fa-sort-amount-asc:before {
        content: "\F160"
    }

    .fa-sort-amount-desc:before {
        content: "\F161"
    }

    .fa-sort-numeric-asc:before {
        content: "\F162"
    }

    .fa-sort-numeric-desc:before {
        content: "\F163"
    }

    .fa-thumbs-up:before {
        content: "\F164"
    }

    .fa-thumbs-down:before {
        content: "\F165"
    }

    .fa-youtube-square:before {
        content: "\F166"
    }

    .fa-youtube:before {
        content: "\F167"
    }

    .fa-xing:before {
        content: "\F168"
    }

    .fa-xing-square:before {
        content: "\F169"
    }

    .fa-youtube-play:before {
        content: "\F16A"
    }

    .fa-dropbox:before {
        content: "\F16B"
    }

    .fa-stack-overflow:before {
        content: "\F16C"
    }

    .fa-instagram:before {
        content: "\F16D"
    }

    .fa-flickr:before {
        content: "\F16E"
    }

    .fa-adn:before {
        content: "\F170"
    }

    .fa-bitbucket:before {
        content: "\F171"
    }

    .fa-bitbucket-square:before {
        content: "\F172"
    }

    .fa-tumblr:before {
        content: "\F173"
    }

    .fa-tumblr-square:before {
        content: "\F174"
    }

    .fa-long-arrow-down:before {
        content: "\F175"
    }

    .fa-long-arrow-up:before {
        content: "\F176"
    }

    .fa-long-arrow-left:before {
        content: "\F177"
    }

    .fa-long-arrow-right:before {
        content: "\F178"
    }

    .fa-apple:before {
        content: "\F179"
    }

    .fa-windows:before {
        content: "\F17A"
    }

    .fa-android:before {
        content: "\F17B"
    }

    .fa-linux:before {
        content: "\F17C"
    }

    .fa-dribbble:before {
        content: "\F17D"
    }

    .fa-skype:before {
        content: "\F17E"
    }

    .fa-foursquare:before {
        content: "\F180"
    }

    .fa-trello:before {
        content: "\F181"
    }

    .fa-female:before {
        content: "\F182"
    }

    .fa-male:before {
        content: "\F183"
    }

    .fa-gittip:before, .fa-gratipay:before {
        content: "\F184"
    }

    .fa-sun-o:before {
        content: "\F185"
    }

    .fa-moon-o:before {
        content: "\F186"
    }

    .fa-archive:before {
        content: "\F187"
    }

    .fa-bug:before {
        content: "\F188"
    }

    .fa-vk:before {
        content: "\F189"
    }

    .fa-weibo:before {
        content: "\F18A"
    }

    .fa-renren:before {
        content: "\F18B"
    }

    .fa-pagelines:before {
        content: "\F18C"
    }

    .fa-stack-exchange:before {
        content: "\F18D"
    }

    .fa-arrow-circle-o-right:before {
        content: "\F18E"
    }

    .fa-arrow-circle-o-left:before {
        content: "\F190"
    }

    .fa-toggle-left:before, .fa-caret-square-o-left:before {
        content: "\F191"
    }

    .fa-dot-circle-o:before {
        content: "\F192"
    }

    .fa-wheelchair:before {
        content: "\F193"
    }

    .fa-vimeo-square:before {
        content: "\F194"
    }

    .fa-turkish-lira:before, .fa-try:before {
        content: "\F195"
    }

    .fa-plus-square-o:before {
        content: "\F196"
    }

    .fa-space-shuttle:before {
        content: "\F197"
    }

    .fa-slack:before {
        content: "\F198"
    }

    .fa-envelope-square:before {
        content: "\F199"
    }

    .fa-wordpress:before {
        content: "\F19A"
    }

    .fa-openid:before {
        content: "\F19B"
    }

    .fa-institution:before, .fa-bank:before, .fa-university:before {
        content: "\F19C"
    }

    .fa-mortar-board:before, .fa-graduation-cap:before {
        content: "\F19D"
    }

    .fa-yahoo:before {
        content: "\F19E"
    }

    .fa-google:before {
        content: "\F1A0"
    }

    .fa-reddit:before {
        content: "\F1A1"
    }

    .fa-reddit-square:before {
        content: "\F1A2"
    }

    .fa-stumbleupon-circle:before {
        content: "\F1A3"
    }

    .fa-stumbleupon:before {
        content: "\F1A4"
    }

    .fa-delicious:before {
        content: "\F1A5"
    }

    .fa-digg:before {
        content: "\F1A6"
    }

    .fa-pied-piper-pp:before {
        content: "\F1A7"
    }

    .fa-pied-piper-alt:before {
        content: "\F1A8"
    }

    .fa-drupal:before {
        content: "\F1A9"
    }

    .fa-joomla:before {
        content: "\F1AA"
    }

    .fa-language:before {
        content: "\F1AB"
    }

    .fa-fax:before {
        content: "\F1AC"
    }

    .fa-building:before {
        content: "\F1AD"
    }

    .fa-child:before {
        content: "\F1AE"
    }

    .fa-paw:before {
        content: "\F1B0"
    }

    .fa-spoon:before {
        content: "\F1B1"
    }

    .fa-cube:before {
        content: "\F1B2"
    }

    .fa-cubes:before {
        content: "\F1B3"
    }

    .fa-behance:before {
        content: "\F1B4"
    }

    .fa-behance-square:before {
        content: "\F1B5"
    }

    .fa-steam:before {
        content: "\F1B6"
    }

    .fa-steam-square:before {
        content: "\F1B7"
    }

    .fa-recycle:before {
        content: "\F1B8"
    }

    .fa-automobile:before, .fa-car:before {
        content: "\F1B9"
    }

    .fa-cab:before, .fa-taxi:before {
        content: "\F1BA"
    }

    .fa-tree:before {
        content: "\F1BB"
    }

    .fa-spotify:before {
        content: "\F1BC"
    }

    .fa-deviantart:before {
        content: "\F1BD"
    }

    .fa-soundcloud:before {
        content: "\F1BE"
    }

    .fa-database:before {
        content: "\F1C0"
    }

    .fa-file-pdf-o:before {
        content: "\F1C1"
    }

    .fa-file-word-o:before {
        content: "\F1C2"
    }

    .fa-file-excel-o:before {
        content: "\F1C3"
    }

    .fa-file-powerpoint-o:before {
        content: "\F1C4"
    }

    .fa-file-photo-o:before, .fa-file-picture-o:before, .fa-file-image-o:before {
        content: "\F1C5"
    }

    .fa-file-zip-o:before, .fa-file-archive-o:before {
        content: "\F1C6"
    }

    .fa-file-sound-o:before, .fa-file-audio-o:before {
        content: "\F1C7"
    }

    .fa-file-movie-o:before, .fa-file-video-o:before {
        content: "\F1C8"
    }

    .fa-file-code-o:before {
        content: "\F1C9"
    }

    .fa-vine:before {
        content: "\F1CA"
    }

    .fa-codepen:before {
        content: "\F1CB"
    }

    .fa-jsfiddle:before {
        content: "\F1CC"
    }

    .fa-life-bouy:before, .fa-life-buoy:before, .fa-life-saver:before, .fa-support:before, .fa-life-ring:before {
        content: "\F1CD"
    }

    .fa-circle-o-notch:before {
        content: "\F1CE"
    }

    .fa-ra:before, .fa-resistance:before, .fa-rebel:before {
        content: "\F1D0"
    }

    .fa-ge:before, .fa-empire:before {
        content: "\F1D1"
    }

    .fa-git-square:before {
        content: "\F1D2"
    }

    .fa-git:before {
        content: "\F1D3"
    }

    .fa-y-combinator-square:before, .fa-yc-square:before, .fa-hacker-news:before {
        content: "\F1D4"
    }

    .fa-tencent-weibo:before {
        content: "\F1D5"
    }

    .fa-qq:before {
        content: "\F1D6"
    }

    .fa-wechat:before, .fa-weixin:before {
        content: "\F1D7"
    }

    .fa-send:before, .fa-paper-plane:before {
        content: "\F1D8"
    }

    .fa-send-o:before, .fa-paper-plane-o:before {
        content: "\F1D9"
    }

    .fa-history:before {
        content: "\F1DA"
    }

    .fa-circle-thin:before {
        content: "\F1DB"
    }

    .fa-header:before {
        content: "\F1DC"
    }

    .fa-paragraph:before {
        content: "\F1DD"
    }

    .fa-sliders:before {
        content: "\F1DE"
    }

    .fa-share-alt:before {
        content: "\F1E0"
    }

    .fa-share-alt-square:before {
        content: "\F1E1"
    }

    .fa-bomb:before {
        content: "\F1E2"
    }

    .fa-soccer-ball-o:before, .fa-futbol-o:before {
        content: "\F1E3"
    }

    .fa-tty:before {
        content: "\F1E4"
    }

    .fa-binoculars:before {
        content: "\F1E5"
    }

    .fa-plug:before {
        content: "\F1E6"
    }

    .fa-slideshare:before {
        content: "\F1E7"
    }

    .fa-twitch:before {
        content: "\F1E8"
    }

    .fa-yelp:before {
        content: "\F1E9"
    }

    .fa-newspaper-o:before {
        content: "\F1EA"
    }

    .fa-wifi:before {
        content: "\F1EB"
    }

    .fa-calculator:before {
        content: "\F1EC"
    }

    .fa-paypal:before {
        content: "\F1ED"
    }

    .fa-google-wallet:before {
        content: "\F1EE"
    }

    .fa-cc-visa:before {
        content: "\F1F0"
    }

    .fa-cc-mastercard:before {
        content: "\F1F1"
    }

    .fa-cc-discover:before {
        content: "\F1F2"
    }

    .fa-cc-amex:before {
        content: "\F1F3"
    }

    .fa-cc-paypal:before {
        content: "\F1F4"
    }

    .fa-cc-stripe:before {
        content: "\F1F5"
    }

    .fa-bell-slash:before {
        content: "\F1F6"
    }

    .fa-bell-slash-o:before {
        content: "\F1F7"
    }

    .fa-trash:before {
        content: "\F1F8"
    }

    .fa-copyright:before {
        content: "\F1F9"
    }

    .fa-at:before {
        content: "\F1FA"
    }

    .fa-eyedropper:before {
        content: "\F1FB"
    }

    .fa-paint-brush:before {
        content: "\F1FC"
    }

    .fa-birthday-cake:before {
        content: "\F1FD"
    }

    .fa-area-chart:before {
        content: "\F1FE"
    }

    .fa-pie-chart:before {
        content: "\F200"
    }

    .fa-line-chart:before {
        content: "\F201"
    }

    .fa-lastfm:before {
        content: "\F202"
    }

    .fa-lastfm-square:before {
        content: "\F203"
    }

    .fa-toggle-off:before {
        content: "\F204"
    }

    .fa-toggle-on:before {
        content: "\F205"
    }

    .fa-bicycle:before {
        content: "\F206"
    }

    .fa-bus:before {
        content: "\F207"
    }

    .fa-ioxhost:before {
        content: "\F208"
    }

    .fa-angellist:before {
        content: "\F209"
    }

    .fa-cc:before {
        content: "\F20A"
    }

    .fa-shekel:before, .fa-sheqel:before, .fa-ils:before {
        content: "\F20B"
    }

    .fa-meanpath:before {
        content: "\F20C"
    }

    .fa-buysellads:before {
        content: "\F20D"
    }

    .fa-connectdevelop:before {
        content: "\F20E"
    }

    .fa-dashcube:before {
        content: "\F210"
    }

    .fa-forumbee:before {
        content: "\F211"
    }

    .fa-leanpub:before {
        content: "\F212"
    }

    .fa-sellsy:before {
        content: "\F213"
    }

    .fa-shirtsinbulk:before {
        content: "\F214"
    }

    .fa-simplybuilt:before {
        content: "\F215"
    }

    .fa-skyatlas:before {
        content: "\F216"
    }

    .fa-cart-plus:before {
        content: "\F217"
    }

    .fa-cart-arrow-down:before {
        content: "\F218"
    }

    .fa-diamond:before {
        content: "\F219"
    }

    .fa-ship:before {
        content: "\F21A"
    }

    .fa-user-secret:before {
        content: "\F21B"
    }

    .fa-motorcycle:before {
        content: "\F21C"
    }

    .fa-street-view:before {
        content: "\F21D"
    }

    .fa-heartbeat:before {
        content: "\F21E"
    }

    .fa-venus:before {
        content: "\F221"
    }

    .fa-mars:before {
        content: "\F222"
    }

    .fa-mercury:before {
        content: "\F223"
    }

    .fa-intersex:before, .fa-transgender:before {
        content: "\F224"
    }

    .fa-transgender-alt:before {
        content: "\F225"
    }

    .fa-venus-double:before {
        content: "\F226"
    }

    .fa-mars-double:before {
        content: "\F227"
    }

    .fa-venus-mars:before {
        content: "\F228"
    }

    .fa-mars-stroke:before {
        content: "\F229"
    }

    .fa-mars-stroke-v:before {
        content: "\F22A"
    }

    .fa-mars-stroke-h:before {
        content: "\F22B"
    }

    .fa-neuter:before {
        content: "\F22C"
    }

    .fa-genderless:before {
        content: "\F22D"
    }

    .fa-facebook-official:before {
        content: "\F230"
    }

    .fa-pinterest-p:before {
        content: "\F231"
    }

    .fa-whatsapp:before {
        content: "\F232"
    }

    .fa-server:before {
        content: "\F233"
    }

    .fa-user-plus:before {
        content: "\F234"
    }

    .fa-user-times:before {
        content: "\F235"
    }

    .fa-hotel:before, .fa-bed:before {
        content: "\F236"
    }

    .fa-viacoin:before {
        content: "\F237"
    }

    .fa-train:before {
        content: "\F238"
    }

    .fa-subway:before {
        content: "\F239"
    }

    .fa-medium:before {
        content: "\F23A"
    }

    .fa-yc:before, .fa-y-combinator:before {
        content: "\F23B"
    }

    .fa-optin-monster:before {
        content: "\F23C"
    }

    .fa-opencart:before {
        content: "\F23D"
    }

    .fa-expeditedssl:before {
        content: "\F23E"
    }

    .fa-battery-4:before, .fa-battery:before, .fa-battery-full:before {
        content: "\F240"
    }

    .fa-battery-3:before, .fa-battery-three-quarters:before {
        content: "\F241"
    }

    .fa-battery-2:before, .fa-battery-half:before {
        content: "\F242"
    }

    .fa-battery-1:before, .fa-battery-quarter:before {
        content: "\F243"
    }

    .fa-battery-0:before, .fa-battery-empty:before {
        content: "\F244"
    }

    .fa-mouse-pointer:before {
        content: "\F245"
    }

    .fa-i-cursor:before {
        content: "\F246"
    }

    .fa-object-group:before {
        content: "\F247"
    }

    .fa-object-ungroup:before {
        content: "\F248"
    }

    .fa-sticky-note:before {
        content: "\F249"
    }

    .fa-sticky-note-o:before {
        content: "\F24A"
    }

    .fa-cc-jcb:before {
        content: "\F24B"
    }

    .fa-cc-diners-club:before {
        content: "\F24C"
    }

    .fa-clone:before {
        content: "\F24D"
    }

    .fa-balance-scale:before {
        content: "\F24E"
    }

    .fa-hourglass-o:before {
        content: "\F250"
    }

    .fa-hourglass-1:before, .fa-hourglass-start:before {
        content: "\F251"
    }

    .fa-hourglass-2:before, .fa-hourglass-half:before {
        content: "\F252"
    }

    .fa-hourglass-3:before, .fa-hourglass-end:before {
        content: "\F253"
    }

    .fa-hourglass:before {
        content: "\F254"
    }

    .fa-hand-grab-o:before, .fa-hand-rock-o:before {
        content: "\F255"
    }

    .fa-hand-stop-o:before, .fa-hand-paper-o:before {
        content: "\F256"
    }

    .fa-hand-scissors-o:before {
        content: "\F257"
    }

    .fa-hand-lizard-o:before {
        content: "\F258"
    }

    .fa-hand-spock-o:before {
        content: "\F259"
    }

    .fa-hand-pointer-o:before {
        content: "\F25A"
    }

    .fa-hand-peace-o:before {
        content: "\F25B"
    }

    .fa-trademark:before {
        content: "\F25C"
    }

    .fa-registered:before {
        content: "\F25D"
    }

    .fa-creative-commons:before {
        content: "\F25E"
    }

    .fa-gg:before {
        content: "\F260"
    }

    .fa-gg-circle:before {
        content: "\F261"
    }

    .fa-tripadvisor:before {
        content: "\F262"
    }

    .fa-odnoklassniki:before {
        content: "\F263"
    }

    .fa-odnoklassniki-square:before {
        content: "\F264"
    }

    .fa-get-pocket:before {
        content: "\F265"
    }

    .fa-wikipedia-w:before {
        content: "\F266"
    }

    .fa-safari:before {
        content: "\F267"
    }

    .fa-chrome:before {
        content: "\F268"
    }

    .fa-firefox:before {
        content: "\F269"
    }

    .fa-opera:before {
        content: "\F26A"
    }

    .fa-internet-explorer:before {
        content: "\F26B"
    }

    .fa-tv:before, .fa-television:before {
        content: "\F26C"
    }

    .fa-contao:before {
        content: "\F26D"
    }

    .fa-500px:before {
        content: "\F26E"
    }

    .fa-amazon:before {
        content: "\F270"
    }

    .fa-calendar-plus-o:before {
        content: "\F271"
    }

    .fa-calendar-minus-o:before {
        content: "\F272"
    }

    .fa-calendar-times-o:before {
        content: "\F273"
    }

    .fa-calendar-check-o:before {
        content: "\F274"
    }

    .fa-industry:before {
        content: "\F275"
    }

    .fa-map-pin:before {
        content: "\F276"
    }

    .fa-map-signs:before {
        content: "\F277"
    }

    .fa-map-o:before {
        content: "\F278"
    }

    .fa-map:before {
        content: "\F279"
    }

    .fa-commenting:before {
        content: "\F27A"
    }

    .fa-commenting-o:before {
        content: "\F27B"
    }

    .fa-houzz:before {
        content: "\F27C"
    }

    .fa-vimeo:before {
        content: "\F27D"
    }

    .fa-black-tie:before {
        content: "\F27E"
    }

    .fa-fonticons:before {
        content: "\F280"
    }

    .fa-reddit-alien:before {
        content: "\F281"
    }

    .fa-edge:before {
        content: "\F282"
    }

    .fa-credit-card-alt:before {
        content: "\F283"
    }

    .fa-codiepie:before {
        content: "\F284"
    }

    .fa-modx:before {
        content: "\F285"
    }

    .fa-fort-awesome:before {
        content: "\F286"
    }

    .fa-usb:before {
        content: "\F287"
    }

    .fa-product-hunt:before {
        content: "\F288"
    }

    .fa-mixcloud:before {
        content: "\F289"
    }

    .fa-scribd:before {
        content: "\F28A"
    }

    .fa-pause-circle:before {
        content: "\F28B"
    }

    .fa-pause-circle-o:before {
        content: "\F28C"
    }

    .fa-stop-circle:before {
        content: "\F28D"
    }

    .fa-stop-circle-o:before {
        content: "\F28E"
    }

    .fa-shopping-bag:before {
        content: "\F290"
    }

    .fa-shopping-basket:before {
        content: "\F291"
    }

    .fa-hashtag:before {
        content: "\F292"
    }

    .fa-bluetooth:before {
        content: "\F293"
    }

    .fa-bluetooth-b:before {
        content: "\F294"
    }

    .fa-percent:before {
        content: "\F295"
    }

    .fa-gitlab:before {
        content: "\F296"
    }

    .fa-wpbeginner:before {
        content: "\F297"
    }

    .fa-wpforms:before {
        content: "\F298"
    }

    .fa-envira:before {
        content: "\F299"
    }

    .fa-universal-access:before {
        content: "\F29A"
    }

    .fa-wheelchair-alt:before {
        content: "\F29B"
    }

    .fa-question-circle-o:before {
        content: "\F29C"
    }

    .fa-blind:before {
        content: "\F29D"
    }

    .fa-audio-description:before {
        content: "\F29E"
    }

    .fa-volume-control-phone:before {
        content: "\F2A0"
    }

    .fa-braille:before {
        content: "\F2A1"
    }

    .fa-assistive-listening-systems:before {
        content: "\F2A2"
    }

    .fa-asl-interpreting:before, .fa-american-sign-language-interpreting:before {
        content: "\F2A3"
    }

    .fa-deafness:before, .fa-hard-of-hearing:before, .fa-deaf:before {
        content: "\F2A4"
    }

    .fa-glide:before {
        content: "\F2A5"
    }

    .fa-glide-g:before {
        content: "\F2A6"
    }

    .fa-signing:before, .fa-sign-language:before {
        content: "\F2A7"
    }

    .fa-low-vision:before {
        content: "\F2A8"
    }

    .fa-viadeo:before {
        content: "\F2A9"
    }

    .fa-viadeo-square:before {
        content: "\F2AA"
    }

    .fa-snapchat:before {
        content: "\F2AB"
    }

    .fa-snapchat-ghost:before {
        content: "\F2AC"
    }

    .fa-snapchat-square:before {
        content: "\F2AD"
    }

    .fa-pied-piper:before {
        content: "\F2AE"
    }

    .fa-first-order:before {
        content: "\F2B0"
    }

    .fa-yoast:before {
        content: "\F2B1"
    }

    .fa-themeisle:before {
        content: "\F2B2"
    }

    .fa-google-plus-circle:before, .fa-google-plus-official:before {
        content: "\F2B3"
    }

    .fa-fa:before, .fa-font-awesome:before {
        content: "\F2B4"
    }

    .fa-handshake-o:before {
        content: "\F2B5"
    }

    .fa-envelope-open:before {
        content: "\F2B6"
    }

    .fa-envelope-open-o:before {
        content: "\F2B7"
    }

    .fa-linode:before {
        content: "\F2B8"
    }

    .fa-address-book:before {
        content: "\F2B9"
    }

    .fa-address-book-o:before {
        content: "\F2BA"
    }

    .fa-vcard:before, .fa-address-card:before {
        content: "\F2BB"
    }

    .fa-vcard-o:before, .fa-address-card-o:before {
        content: "\F2BC"
    }

    .fa-user-circle:before {
        content: "\F2BD"
    }

    .fa-user-circle-o:before {
        content: "\F2BE"
    }

    .fa-user-o:before {
        content: "\F2C0"
    }

    .fa-id-badge:before {
        content: "\F2C1"
    }

    .fa-drivers-license:before, .fa-id-card:before {
        content: "\F2C2"
    }

    .fa-drivers-license-o:before, .fa-id-card-o:before {
        content: "\F2C3"
    }

    .fa-quora:before {
        content: "\F2C4"
    }

    .fa-free-code-camp:before {
        content: "\F2C5"
    }

    .fa-telegram:before {
        content: "\F2C6"
    }

    .fa-thermometer-4:before, .fa-thermometer:before, .fa-thermometer-full:before {
        content: "\F2C7"
    }

    .fa-thermometer-3:before, .fa-thermometer-three-quarters:before {
        content: "\F2C8"
    }

    .fa-thermometer-2:before, .fa-thermometer-half:before {
        content: "\F2C9"
    }

    .fa-thermometer-1:before, .fa-thermometer-quarter:before {
        content: "\F2CA"
    }

    .fa-thermometer-0:before, .fa-thermometer-empty:before {
        content: "\F2CB"
    }

    .fa-shower:before {
        content: "\F2CC"
    }

    .fa-bathtub:before, .fa-s15:before, .fa-bath:before {
        content: "\F2CD"
    }

    .fa-podcast:before {
        content: "\F2CE"
    }

    .fa-window-maximize:before {
        content: "\F2D0"
    }

    .fa-window-minimize:before {
        content: "\F2D1"
    }

    .fa-window-restore:before {
        content: "\F2D2"
    }

    .fa-times-rectangle:before, .fa-window-close:before {
        content: "\F2D3"
    }

    .fa-times-rectangle-o:before, .fa-window-close-o:before {
        content: "\F2D4"
    }

    .fa-bandcamp:before {
        content: "\F2D5"
    }

    .fa-grav:before {
        content: "\F2D6"
    }

    .fa-etsy:before {
        content: "\F2D7"
    }

    .fa-imdb:before {
        content: "\F2D8"
    }

    .fa-ravelry:before {
        content: "\F2D9"
    }

    .fa-eercast:before {
        content: "\F2DA"
    }

    .fa-microchip:before {
        content: "\F2DB"
    }

    .fa-snowflake-o:before {
        content: "\F2DC"
    }

    .fa-superpowers:before {
        content: "\F2DD"
    }

    .fa-wpexplorer:before {
        content: "\F2DE"
    }

    .fa-meetup:before {
        content: "\F2E0"
    }

    .sr-only {
        position: absolute;
        width: 1px;
        height: 1px;
        padding: 0;
        margin: -1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        border: 0
    }

    .sr-only-focusable:active, .sr-only-focusable:focus {
        position: static;
        width: auto;
        height: auto;
        margin: 0;
        overflow: visible;
        clip: auto
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017, 2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    .p-DockPanel.p-SplitPanel-child {
        padding: 0px;
    }

    .p-SplitPanel-handle {
        background: var(--theia-layout-color1);
    }

    .p-DockPanel-widget {
        min-width: 100px;
        min-height: 100px;
    }

    .p-DockPanel-handle[data-orientation='vertical'] {
        min-height: var(--theia-border-width);
        border-top: var(--theia-border-width) solid var(--theia-border-color1);
    }

    .p-DockPanel-handle[data-orientation='horizontal'] {
        min-width: var(--theia-border-width);
        border-left: var(--theia-border-width) solid var(--theia-border-color1);
    }

    .p-DockPanel-handle[data-orientation='horizontal']:after {
        background-color: var(--theia-layout-color0);
        border-left: var(--theia-border-width) solid var(--theia-border-color1);
    }

    .p-DockPanel-overlay {
        background: rgba(33, 150, 243, 0.1);
        border: var(--theia-border-width) dashed var(--theia-brand-color1);
        transition-property: top, left, right, bottom;
        transition-duration: 150ms;
        transition-timing-function: ease;
    }

    .p-DockPanel-overlay.p-mod-root-top,
    .p-DockPanel-overlay.p-mod-root-left,
    .p-DockPanel-overlay.p-mod-root-right,
    .p-DockPanel-overlay.p-mod-root-bottom,
    .p-DockPanel-overlay.p-mod-root-center {
        border-width: 2px;
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017, 2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    .p-Widget.dialogOverlay {
        z-index: 5000;
        display: flex;
        flex-direction: column;
        position: fixed;
        width: 100vw;
        height: 100vh;
        top: 0;
        left: 0;
        justify-content: center;
        align-items: center;
        background: rgba(1, 1, 1, 0.5);
        color: var(--theia-ui-font-color1);
        font-size: var(--theia-ui-font-size1);
        padding: 2px;
    }

    .p-Widget.dialogOverlay .dialogBlock {
        display: flex;
        flex-direction: column;
        min-width: 400px;
        min-height: 150px;
        background-color: var(--theia-ui-dialog-color);
        color: var(--theia-ui-dialog-font-color);
    }

    .p-Widget.dialogOverlay .dialogTitle {
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: space-between;
        align-items: center;
        text-align: center;
        font-size: var(--theia-ui-font-size1);
        background-color: var(--theia-ui-dialog-header-color);
        color: var(--theia-ui-dialog-header-font-color);
        padding: 0 calc(var(--theia-ui-padding) * 2);
        min-height: 24px;
    }

    .p-Widget.dialogOverlay .dialogTitle i.closeButton {
        cursor: pointer;
    }

    .p-Widget.dialogOverlay .dialogContent {
        display: flex;
        flex-grow: 2;
        flex-direction: column;
        justify-content: space-around;
        align-items: stretch;
        position: relative;
        padding: calc(var(--theia-ui-padding) * 2);
    }

    .p-Widget.dialogOverlay .dialogControl {
        padding: calc(var(--theia-ui-padding) * 2);
        padding-top: 0px;
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: flex-end;
        min-height: 21px;
    }

    input {
        font-size: var(--theia-ui-font-size1);
        line-height: var(--theia-content-line-height);
        border-width: 1px;
        border-style: solid;
        border-color: var(--theia-border-color1);
        background: var(--theia-layout-color2);
        color: var(--theia-ui-font-color1);
        padding-left: 5px;
    }

    .dialogOverlay :focus {
        box-shadow: 0px 0px 1px 1px var(--theia-accent-color3);
        outline: none;
    }

    .p-Widget.dialogOverlay select {
        border: 1px solid var(--theia-border-color1);
        color: var(--theia-ui-font-color1);
        font-size: var(--theia-ui-font-size1);
        border-radius: 0;
        background: transparent;
        outline: none;
    }

    .p-Widget.dialogOverlay.hidden {
        display: none;
    }

    .p-Widget.dialogOverlay.dialogErrorMessage {
        display: none;
    }

    .p-Widget.dialogOverlay .error {
        color: var(--theia-error-color1);
    }

    .p-Widget.dialogOverlay .error.main {
        color: var(--theia-error-color1);
        border-color: var(--theia-error-color1);
    }

    .p-Widget.dialogOverlay .error > .theia-button.main {
        background-color: var(--theia-error-color1);
        color: var(--theia-ui-font-color1);
    }

    .p-Widget.dialogOverlay .error > .dialogErrorMessage {
        margin-top: calc(var(--theia-ui-padding) * 3);
        font-size: var(--theia-ui-font-size1);
        display: block;
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017, 2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    /*-----------------------------------------------------------------------------
| Variables
|----------------------------------------------------------------------------*/


    :root {
        --theia-private-menubar-height: 32px;
        --theia-private-menu-item-height: 24px;
    }


    /*-----------------------------------------------------------------------------
| MenuBar
|----------------------------------------------------------------------------*/


    .p-Widget.p-MenuBar {
        padding-left: 5px;
        background: var(--theia-menu-color0);
        color: var(--theia-ui-bar-font-color1);
        font-size: var(--theia-ui-font-size1);
    }


    .p-MenuBar-menu {
        transform: translateY(calc(-2 * var(--theia-border-width)));
    }


    .p-MenuBar-item {
        padding: 0px 8px;
        border-left: var(--theia-border-width) solid transparent;
        border-right: var(--theia-border-width) solid transparent;
        line-height: var(--theia-private-menubar-height);
    }


    .p-MenuBar-item.p-mod-active {
        background: var(--theia-menu-color2);
        color: var(--theia-ui-bar-font-color0);
        opacity: 1;
    }


    .p-MenuBar.p-mod-active .p-MenuBar-item.p-mod-active {
        z-index: 10001;
        background: var(--theia-menu-color1);
        border-left: var(--theia-border-width) solid var(--theia-border-color1);
        border-right: var(--theia-border-width) solid var(--theia-border-color1);
        box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2);
    }


    .p-MenuBar-item.p-mod-disabled {
        opacity: var(--theia-mod-disabled-opacity);;
    }


    .p-MenuBar-item.p-type-separator {
        margin: 2px;
        padding: 0;
        border: none;
        border-left: var(--theia-border-width) solid var(--theia-border-color2);
    }


    .p-MenuBar-itemMnemonic {
        text-decoration: underline;
    }


    #theia-top-panel {
        background: var(--theia-menu-color0);
        display: flex;
        min-height: var(--theia-private-menubar-height);
    }


    /*-----------------------------------------------------------------------------
| Menu
|----------------------------------------------------------------------------*/


    .p-Menu {
        z-index: 10000;
        padding: 4px 0px;
        background: var(--theia-menu-color1);
        color: var(--theia-ui-font-color1);
        font-size: var(--theia-ui-font-size1);
        box-shadow: 0px 1px 6px rgba(0, 0, 0, 0.2);
    }


    .p-Menu-item {
        min-height: var(--theia-private-menu-item-height);
        max-height: var(--theia-private-menu-item-height);
        padding: 0px;
        line-height: var(--theia-private-menu-item-height);
    }


    .p-Menu-item.p-mod-active {
        background: var(--theia-menu-color2);
        color: var(--theia-ui-bar-font-color0);
        opacity: 1;
    }


    .p-Menu-item.p-mod-disabled {
        opacity: var(--theia-mod-disabled-opacity);;
    }


    .p-Menu-itemIcon {
        width: 21px;
        padding: 0px 2px 0px 4px;
        margin-top: -2px;
    }


    .p-Menu-itemLabel {
        padding: 0px 32px 0px 2px;
    }


    .p-Menu-itemMnemonic {
        text-decoration: underline;
    }


    .p-Menu-itemShortcut {
        padding: 0px;
    }


    .p-Menu-itemSubmenuIcon {
        width: 16px;
        padding: 0px 4px 0px 0px;
    }


    .p-Menu-item[data-type='separator'] > div {
        padding: 0;
        height: 9px;
    }


    .p-Menu-item[data-type='separator'] > div::after {
        content: '';
        display: block;
        position: relative;
        top: 4px;
        border-top: var(--theia-border-width) solid var(--theia-ui-font-color3);
    }

    .p-Menu-itemIcon::before,
    .p-Menu-itemSubmenuIcon::before {
        font-family: FontAwesome;
    }


    .p-Menu-item.p-mod-toggled > .p-Menu-itemIcon::before {
        content: '\F00C';
    }


    .p-Menu-item[data-type='submenu'] > .p-Menu-itemSubmenuIcon::before {
        content: '\F0DA';

    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017, 2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    /*-----------------------------------------------------------------------------
| Variables
|----------------------------------------------------------------------------*/

    :root {
        --theia-private-sidebar-tab-width: 50px;
        --theia-private-sidebar-tab-height: 32px;
        --theia-private-sidebar-scrollbar-rail-width: 7px;
        --theia-private-sidebar-scrollbar-width: 5px;
        --theia-private-sidebar-icon-size: 28px;
    }


    /*-----------------------------------------------------------------------------
| SideBars (left and right)
|----------------------------------------------------------------------------*/

    .p-TabBar.theia-app-sides {
        display: block;
        color: var(--theia-tab-font-color);
        background: var(--theia-layout-color2);
        font-size: var(--theia-ui-font-size1);
        min-width: var(--theia-private-sidebar-tab-width);
        max-width: var(--theia-private-sidebar-tab-width);
    }

    .p-TabBar.theia-app-sides .p-TabBar-content {
        z-index: 1;
    }

    .p-TabBar.theia-app-sides .p-TabBar-tab {
        position: relative;
        padding: 11px 10px;
        background: var(--theia-layout-color2);
        flex-direction: column;
        justify-content: center;
        align-items: center;
        min-height: var(--theia-private-sidebar-tab-height);
        cursor: pointer;
    }

    .p-TabBar.theia-app-left .p-TabBar-tab {
        border-left: var(--theia-panel-border-width) solid var(--theia-layout-color2);
        margin-right: var(--theia-panel-border-width);
    }

    .p-TabBar.theia-app-right .p-TabBar-tab {
        border-right: var(--theia-panel-border-width) solid var(--theia-layout-color2);
        margin-left: var(--theia-panel-border-width);
    }

    .p-TabBar.theia-app-sides .p-TabBar-tab.p-mod-current {
        color: var(--theia-tab-font-color);
        opacity: 1.0;
        background: none;
        min-height: var(--theia-private-sidebar-tab-height);
        height: var(--theia-private-sidebar-tab-height);
        border-top: none;
    }

    .p-TabBar.theia-app-left .p-TabBar-tab.p-mod-current.theia-mod-active {
        border-left-color: var(--theia-accent-color2);
        border-top-color: transparent;
    }

    .p-TabBar.theia-app-right .p-TabBar-tab.p-mod-current.theia-mod-active {
        border-right-color: var(--theia-accent-color2);
        border-top-color: transparent;
    }

    .p-TabBar.theia-app-sides .p-TabBar-tabLabel,
    .p-TabBar.theia-app-sides .p-TabBar-tabCloseIcon {
        display: none;
    }

    .p-TabBar.theia-app-sides .p-TabBar-tabIcon {
        width: var(--theia-private-sidebar-icon-size);
        height: var(--theia-private-sidebar-icon-size);
        background-color: var(--theia-tab-icon-color);
        opacity: 0.6;
        mask-repeat: no-repeat;
        -webkit-mask-repeat: no-repeat;
        mask-size: var(--theia-private-sidebar-icon-size);
        -webkit-mask-size: var(--theia-private-sidebar-icon-size);
    }

    .p-TabBar.theia-app-sides .file-icon.p-TabBar-tabIcon,
    .p-TabBar.theia-app-sides .file-icon.p-TabBar-tabIcon:hover,
    .p-TabBar.theia-app-sides .p-mod-current .file-icon.p-TabBar-tabIcon,
    .p-TabBar.theia-app-sides .fa.p-TabBar-tabIcon:hover,
    .p-TabBar.theia-app-sides .p-mod-current .fa.p-TabBar-tabIcon {
        opacity: 1.0;
        background: none;
    }

    .p-TabBar.theia-app-sides .p-TabBar-tabIcon:hover,
    .p-TabBar.theia-app-sides .p-mod-current .p-TabBar-tabIcon {
        opacity: 1.0;
    }

    .p-TabBar.theia-app-sides .fa.p-TabBar-tabIcon {
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 23px;
        opacity: 0.6;
        text-align: center;
        background: none;
        color: var(--theia-tab-icon-color);
    }

    .p-TabBar.theia-app-left .p-TabBar-tabLabel {
        transform-origin: top left 0;
        transform: rotate(-90deg) translateX(-100%);
    }

    .p-TabBar.theia-app-right .p-TabBar-tabLabel {
        transform-origin: top left 0;
        transform: rotate(90deg) translateY(-50%);
    }

    #theia-left-content-panel.theia-mod-collapsed,
    #theia-right-content-panel.theia-mod-collapsed {
        max-width: var(--theia-private-sidebar-tab-width);
    }

    .theia-side-panel {
        background-color: var(--theia-layout-color1);
    }


    /*-----------------------------------------------------------------------------
| Perfect scrollbar
|----------------------------------------------------------------------------*/

    .p-TabBar.theia-app-sides > .ps__rail-y {
        width: var(--theia-private-sidebar-scrollbar-rail-width);
        z-index: 1000;
    }

    .p-TabBar.theia-app-sides > .ps__rail-y > .ps__thumb-y {
        width: var(--theia-private-sidebar-scrollbar-width);
        right: calc((var(--theia-private-sidebar-scrollbar-rail-width) - var(--theia-private-sidebar-scrollbar-width)) / 2);
    }

    .p-TabBar.theia-app-sides > .ps__rail-y:hover,
    .p-TabBar.theia-app-sides > .ps__rail-y:focus {
        width: var(--theia-private-sidebar-scrollbar-rail-width);
    }

    .p-TabBar.theia-app-sides > .ps__rail-y:hover > .ps__thumb-y,
    .p-TabBar.theia-app-sides > .ps__rail-y:focus > .ps__thumb-y {
        width: var(--theia-private-sidebar-scrollbar-width);
        right: calc((var(--theia-private-sidebar-scrollbar-rail-width) - var(--theia-private-sidebar-scrollbar-width)) / 2);
    }


    /*-----------------------------------------------------------------------------
| Bottom content panel
|----------------------------------------------------------------------------*/

    #theia-bottom-content-panel {
        border-top: var(--theia-panel-border-width) solid var(--theia-border-color1);
    }


    /*-----------------------------------------------------------------------------
| Hidden tab bars used for rendering vertical side bars
|----------------------------------------------------------------------------*/

    .theia-TabBar-hidden-content {
        display: flex;
        position: absolute;
        visibility: hidden;
    }

    .p-TabBar.theia-app-sides > .theia-TabBar-hidden-content .p-TabBar-tab {
        line-height: var(--theia-private-sidebar-tab-width);
    }

    .p-TabBar.theia-app-left > .theia-TabBar-hidden-content .p-TabBar-tabLabel {
        transform: none;
    }

    .p-TabBar.theia-app-right > .theia-TabBar-hidden-content .p-TabBar-tabLabel {
        transform: none;
    }

    /*-----------------------------------------------------------------------------
| Sidepanel Toolbar
|----------------------------------------------------------------------------*/

    .theia-sidepanel-toolbar {
        min-height: calc(var(--theia-private-horizontal-tab-height) + var(--theia-private-horizontal-tab-scrollbar-rail-height) / 2);
        display: flex;
        padding-left: 5px;
        align-items: center;
        background-color: var(--theia-layout-color1);
    }

    .theia-sidepanel-toolbar .theia-sidepanel-title {
        color: var(--theia-ui-font-color1);
        flex: 1;
        margin-left: 14px;
        text-transform: uppercase;
        font-size: var(--theia-ui-font-size0);
    }

    .theia-sidepanel-toolbar .p-TabBar-toolbar .item {
        color: var(--theia-ui-font-color1);
    }

    .theia-sidepanel-toolbar .p-TabBar-toolbar .item > div {
        height: 18px;
        width: 18px;
        background-repeat: no-repeat;
    }
    </style>
    <style type="text/css">/*-----------------------------------------------------------------------------
| Variables
|----------------------------------------------------------------------------*/

    :root {
        /* These need to be root because tabs get attached to the body during dragging. */
        --theia-private-horizontal-tab-height: 28.5px;
        --theia-private-horizontal-tab-scrollbar-rail-height: 7px;
        --theia-private-horizontal-tab-scrollbar-height: 5px;
    }

    /*-----------------------------------------------------------------------------
| General tab bar style
|----------------------------------------------------------------------------*/

    .p-TabBar {
        color: var(--theia-ui-font-color1);
        background: var(--theia-layout-color1);
        font-size: var(--theia-ui-font-size1);
    }

    .p-TabBar[data-orientation='horizontal'].theia-app-bottom {
        background: var(--theia-layout-color0);
    }

    .p-TabBar[data-orientation='horizontal'].theia-app-bottom .p-TabBar-tab {
        background: var(--theia-layout-color0);
    }

    .p-TabBar[data-orientation='horizontal'].theia-app-bottom .p-TabBar-tab.p-mod-current {
        background: var(--theia-layout-color0);
        border-top: var(--theia-border-width) solid var(--theia-ui-font-color2);
    }

    .p-TabBar[data-orientation='horizontal'].theia-app-bottom .p-TabBar-tab.p-mod-current.theia-mod-active {
        border-top-color: var(--theia-accent-color2);
    }

    .p-TabBar[data-orientation='horizontal'] {
        overflow-x: hidden;
        overflow-y: hidden;
        min-height: calc(var(--theia-private-horizontal-tab-height) + var(--theia-private-horizontal-tab-scrollbar-rail-height) / 2);
    }

    .p-TabBar .p-TabBar-content {
        cursor: pointer;
    }

    .p-TabBar[data-orientation='horizontal'] .p-TabBar-content {
        flex: none;
        align-items: flex-end;
        z-index: 1;
    }

    .p-TabBar[data-orientation='horizontal'] .p-TabBar-tab {
        flex: none;
        height: calc(var(--theia-private-horizontal-tab-height) + var(--theia-private-horizontal-tab-scrollbar-rail-height) / 2);
        min-width: 35px;
        line-height: var(--theia-private-horizontal-tab-height);
        padding: 0px 8px;
        background: var(--theia-layout-color2);
        align-items: center;
    }

    .p-TabBar[data-orientation='horizontal'] .p-TabBar-tab:last-child {
        border-right: var(--theia-border-width) solid var(--theia-border-color0);
    }

    .p-TabBar[data-orientation='horizontal'] .p-TabBar-tab:hover:not(.p-mod-current) {
        background: var(--theia-accent-color3);
    }


    /*-----------------------------------------------------------------------------
| Tabs in the center area (main and bottom)
|----------------------------------------------------------------------------*/

    #theia-main-content-panel .p-Widget.p-DockPanel-widget {
        background-color: var(--theia-layout-color0);
    }

    /* This is a current tab of a tab bar: each tab bar has 1. */
    .p-TabBar .p-TabBar-tab.p-mod-current {
        min-height: calc(var(--theia-private-horizontal-tab-height) + var(--theia-border-width));
        background: var(--theia-layout-color0);
        color: var(--theia-ui-font-color0);
        border-top: var(--theia-border-width) solid var(--theia-layout-color0);
    }

    /* This is the main application level active tab: only 1 exists. */
    .p-TabBar .p-TabBar-tab.p-mod-current.theia-mod-active {
        border-top-color: var(--theia-accent-color2);
    }

    .p-TabBar.theia-app-centers .p-TabBar-tabIcon,
    .p-TabBar.theia-app-centers .p-TabBar-tabLabel,
    .p-TabBar.theia-app-centers .p-TabBar-tabLabelDetails,
    .p-TabBar.theia-app-centers .p-TabBar-tabCloseIcon {
        display: inline-block;
    }

    .p-TabBar.theia-app-centers .p-TabBar-tabLabelDetails {
        margin-left: 5px;
        color: var(--theia-ui-font-color2);
        flex: 1 1 auto;
        overflow: hidden;
        white-space: nowrap;
    }

    .p-TabBar.theia-app-centers .p-TabBar-tabLabelWrapper {
        display: flex;
    }

    .p-TabBar-tab-secondary-label {
        color: var(--theia-brand-color2);
        cursor: pointer;
        font-size: var(--theia-ui-font-size0);
        margin-left: 5px;
        text-decoration-line: underline;

        -webkit-appearance: none;
        -moz-appearance: none;
        background-image: linear-gradient(45deg, transparent 50%, var(--theia-ui-font-color1) 50%), linear-gradient(135deg, var(--theia-ui-font-color1) 50%, transparent 50%);
        background-position: calc(100% - 6px) 8px, calc(100% - 2px) 8px, 100% 0;
        background-size: 4px 5px;
        background-repeat: no-repeat;
        padding: 2px 14px 0 0;
    }

    .p-TabBar .p-TabBar-tabIcon {
        width: 15px;
        line-height: 1.7;
        font-size: 12px;
        text-align: center;
        background-repeat: no-repeat;
    }

    .p-TabBar.theia-app-centers .p-TabBar-tabIcon {
        height: 14px;
        background-size: 13px;
        background-position-y: 3px;
        background-color: var(--theia-tab-icon-color);
        -webkit-mask-repeat: no-repeat;
        -webkit-mask-size: 13px;
        mask-repeat: no-repeat;
        mask-size: 13px;
        padding-right: 2px;
    }

    .p-TabBar[data-orientation='horizontal'] .file-icon.p-TabBar-tabIcon {
        background: none;
        padding-bottom: 0px;
        padding-right: 0;
        min-height: 20px;
    }

    .p-TabBar[data-orientation='horizontal'] .fa.p-TabBar-tabIcon {
        background: none;
        padding-bottom: 6px;
        min-height: 0;
    }

    .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable > .p-TabBar-tabCloseIcon {
        padding-left: 10px;
        height: 16px;
        width: 16px;
        background-size: 13px;
        background-position: center;
        background-repeat: no-repeat;
    }

    .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable {
        padding-right: 2px;
    }


    .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable:hover > .p-TabBar-tabCloseIcon,
    .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-current > .p-TabBar-tabCloseIcon {
        background-image: var(--theia-icon-close);
    }

    .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable.theia-mod-dirty > .p-TabBar-tabCloseIcon {
        background-size: 10px;
        background-image: var(--theia-icon-circle);
    }

    .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable.theia-mod-dirty > .p-TabBar-tabCloseIcon:hover {
        background-size: 13px;
        background-image: var(--theia-icon-close);
    }

    .p-TabBar.theia-app-centers .p-TabBar-tab > .p-TabBar-tabIcon.no-icon {
        display: none;
    }

    /*-----------------------------------------------------------------------------
| Perfect scrollbar
|----------------------------------------------------------------------------*/

    .p-TabBar[data-orientation='horizontal'] > .p-TabBar-content-container > .ps__rail-x {
        height: var(--theia-private-horizontal-tab-scrollbar-rail-height);
        z-index: 1000;
    }

    .p-TabBar[data-orientation='horizontal'] > .p-TabBar-content-container > .ps__rail-x > .ps__thumb-x {
        height: var(--theia-private-horizontal-tab-scrollbar-height) !important;
        bottom: calc((var(--theia-private-horizontal-tab-scrollbar-rail-height) - var(--theia-private-horizontal-tab-scrollbar-height)) / 2);
    }

    .p-TabBar[data-orientation='horizontal'] > .p-TabBar-content-container > .ps__rail-x:hover,
    .p-TabBar[data-orientation='horizontal'] > .p-TabBar-content-container > .ps__rail-x:focus {
        height: var(--theia-private-horizontal-tab-scrollbar-rail-height) !important;
    }

    .p-TabBar[data-orientation='horizontal'] > .p-TabBar-content-container > .ps__rail-x:hover > .ps__thumb-x,
    .p-TabBar[data-orientation='horizontal'] > .p-TabBar-content-container > .ps__rail-x:focus > .ps__thumb-x {
        height: calc(var(--theia-private-horizontal-tab-scrollbar-height) / 2) !important;
        bottom: calc((var(--theia-private-horizontal-tab-scrollbar-rail-height) - var(--theia-private-horizontal-tab-scrollbar-height)) / 2);
    }


    /*-----------------------------------------------------------------------------
| Dragged tabs
|----------------------------------------------------------------------------*/

    .p-TabBar-tab.p-mod-drag-image {
        transform: translateX(-40%) translateY(-58%);
        opacity: 0.8;
        min-height: var(--theia-private-horizontal-tab-height);
        padding: 0px 10px;
        font-size: var(--theia-ui-font-size1);
        line-height: var(--theia-private-horizontal-tab-height);
        color: var(--theia-ui-font-color1);
        background: var(--theia-layout-color4);
        border: var(--theia-border-width) solid var(--theia-border-color1);
        box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
    }

    .p-TabBar-tab.p-mod-drag-image > .p-TabBar-tabIcon,
    .p-TabBar-tab.p-mod-drag-image > .p-TabBar-tabLabel {
        display: inline-block;
    }

    .p-TabBar-tab.p-mod-drag-image > .p-TabBar-tabIcon.no-icon {
        display: none;
    }

    .p-TabBar-tab.p-mod-drag-image > .p-TabBar-tabIcon {
        width: 15px;
        line-height: 1.7;
    }

    /*-----------------------------------------------------------------------------
| Tab-bar toolbar
|----------------------------------------------------------------------------*/

    .p-TabBar-toolbar {
        z-index: 1001; /* Due to the scrollbar (`z-index: 1000;`) it has a greater `z-index`. */
        display: flex;
        flex-direction: row-reverse;
        padding: 4px;
        padding-left: 0px;
        margin-right: 4px;
    }

    .p-TabBar-content-container {
        display: flex;
        flex: 1;
    }

    .p-TabBar-toolbar .item {
        display: flex;
        align-items: center;
        margin-left: 8px; /* `padding` + `margin-right` from the container toolbar */
        opacity: var(--theia-mod-disabled-opacity);;
        cursor: default;
    }

    .p-TabBar-toolbar .item.enabled {
        opacity: 1.0;
        cursor: pointer;
    }

    .p-TabBar-toolbar .item.enabled.active {
        transform: scale(1.272019649);
    }

    .p-TabBar-toolbar .item > div {
        height: 18px;
        width: 18px;
        background-repeat: no-repeat;
        line-height: 18px;
    }
    </style>
    <style type="text/css">/*
 * Container style
 */
    .ps {
        overflow: hidden !important;
        overflow-anchor: none;
        -ms-overflow-style: none;
        touch-action: auto;
        -ms-touch-action: auto;
    }

    /*
 * Scrollbar rail styles
 */
    .ps__rail-x {
        display: none;
        opacity: 0;
        transition: background-color .2s linear, opacity .2s linear;
        -webkit-transition: background-color .2s linear, opacity .2s linear;
        height: 15px;
        /* there must be 'bottom' or 'top' for ps__rail-x */
        bottom: 0px;
        /* please don't change 'position' */
        position: absolute;
    }

    .ps__rail-y {
        display: none;
        opacity: 0;
        transition: background-color .2s linear, opacity .2s linear;
        -webkit-transition: background-color .2s linear, opacity .2s linear;
        width: 15px;
        /* there must be 'right' or 'left' for ps__rail-y */
        right: 0;
        /* please don't change 'position' */
        position: absolute;
    }

    .ps--active-x > .ps__rail-x,
    .ps--active-y > .ps__rail-y {
        display: block;
        background-color: transparent;
    }

    .ps:hover > .ps__rail-x,
    .ps:hover > .ps__rail-y,
    .ps--focus > .ps__rail-x,
    .ps--focus > .ps__rail-y,
    .ps--scrolling-x > .ps__rail-x,
    .ps--scrolling-y > .ps__rail-y {
        opacity: 0.6;
    }

    .ps .ps__rail-x:hover,
    .ps .ps__rail-y:hover,
    .ps .ps__rail-x:focus,
    .ps .ps__rail-y:focus,
    .ps .ps__rail-x.ps--clicking,
    .ps .ps__rail-y.ps--clicking {
        background-color: #eee;
        opacity: 0.9;
    }

    /*
 * Scrollbar thumb styles
 */
    .ps__thumb-x {
        background-color: #aaa;
        border-radius: 6px;
        transition: background-color .2s linear, height .2s ease-in-out;
        -webkit-transition: background-color .2s linear, height .2s ease-in-out;
        height: 6px;
        /* there must be 'bottom' for ps__thumb-x */
        bottom: 2px;
        /* please don't change 'position' */
        position: absolute;
    }

    .ps__thumb-y {
        background-color: #aaa;
        border-radius: 6px;
        transition: background-color .2s linear, width .2s ease-in-out;
        -webkit-transition: background-color .2s linear, width .2s ease-in-out;
        width: 6px;
        /* there must be 'right' for ps__thumb-y */
        right: 2px;
        /* please don't change 'position' */
        position: absolute;
    }

    .ps__rail-x:hover > .ps__thumb-x,
    .ps__rail-x:focus > .ps__thumb-x,
    .ps__rail-x.ps--clicking .ps__thumb-x {
        background-color: #999;
        height: 11px;
    }

    .ps__rail-y:hover > .ps__thumb-y,
    .ps__rail-y:focus > .ps__thumb-y,
    .ps__rail-y.ps--clicking .ps__thumb-y {
        background-color: #999;
        width: 11px;
    }

    /* MS supports */
    @supports (-ms-overflow-style: none) {
        .ps {
            overflow: auto !important;
        }
    }

    @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
        .ps {
            overflow: auto !important;
        }
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017, 2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    ::-webkit-scrollbar {
        height: var(--theia-scrollbar-width);
        width: var(--theia-scrollbar-width);
        background: var(--theia-scrollbar-rail-color);
    }

    ::-webkit-scrollbar-thumb {
        background: var(--theia-scrollbar-thumb-color);
    }

    ::-webkit-scrollbar:hover {
        background: var(--theia-scrollbar-active-rail-color);
    }

    ::-webkit-scrollbar-thumb:hover {
        background: var(--theia-scrollbar-active-thumb-color);
    }

    ::-webkit-scrollbar-corner {
        background: transparent;
    }


    /*-----------------------------------------------------------------------------
| Perfect scrollbar
|----------------------------------------------------------------------------*/

    #theia-app-shell .ps__rail-x,
    #theia-dialog-shell .ps__rail-x {
        height: var(--theia-scrollbar-rail-width);
        background: var(--theia-scrollbar-rail-color);
    }

    #theia-app-shell .ps__rail-x > .ps__thumb-x,
    #theia-dialog-shell .ps__rail-x > .ps__thumb-x {
        height: var(--theia-scrollbar-width);
        bottom: calc((var(--theia-scrollbar-rail-width) - var(--theia-scrollbar-width)) / 2);
        background: var(--theia-scrollbar-thumb-color);
        border-radius: 0px;
    }

    #theia-app-shell .ps__rail-x:hover,
    #theia-app-shell .ps__rail-x:focus,
    #theia-dialog-shell .ps__rail-x:hover,
    #theia-dialog-shell .ps__rail-x:focus {
        height: var(--theia-scrollbar-rail-width);
    }

    #theia-app-shell .ps__rail-x:hover > .ps__thumb-x,
    #theia-app-shell .ps__rail-x:focus > .ps__thumb-x,
    #theia-app-shell .ps__rail-x.ps--clicking .ps__thumb-x,
    #theia-dialog-shell .ps__rail-x:hover > .ps__thumb-x,
    #theia-dialog-shell .ps__rail-x:focus > .ps__thumb-x,
    #theia-dialog-shell .ps__rail-x.ps--clicking .ps__thumb-x {
        height: var(--theia-scrollbar-width);
    }

    #theia-app-shell .ps__rail-y,
    #theia-dialog-shell .ps__rail-y {
        width: var(--theia-scrollbar-rail-width);
        background: var(--theia-scrollbar-rail-color);
    }

    #theia-app-shell .ps__rail-y > .ps__thumb-y,
    #theia-dialog-shell .ps__rail-y > .ps__thumb-y {
        width: var(--theia-scrollbar-width);
        right: calc((var(--theia-scrollbar-rail-width) - var(--theia-scrollbar-width)) / 2);
        background: var(--theia-scrollbar-thumb-color);
        border-radius: 0px;
    }

    #theia-app-shell .ps__rail-y:hover,
    #theia-app-shell .ps__rail-y:focus,
    #theia-dialog-shell .ps__rail-y:hover,
    #theia-dialog-shell .ps__rail-y:focus {
        width: var(--theia-scrollbar-rail-width);
    }

    #theia-app-shell .ps__rail-y:hover > .ps__thumb-y,
    #theia-app-shell .ps__rail-y:focus > .ps__thumb-y,
    #theia-app-shell .ps__rail-y.ps--clicking .ps__thumb-y,
    #theia-dialog-shell .ps__rail-y:hover > .ps__thumb-y,
    #theia-dialog-shell .ps__rail-y:focus > .ps__thumb-y,
    #theia-dialog-shell .ps__rail-y.ps--clicking .ps__thumb-y {
        right: calc((var(--theia-scrollbar-rail-width) - var(--theia-scrollbar-width)) / 2);
        width: var(--theia-scrollbar-width);
    }

    #theia-app-shell .ps [class^='ps__rail']:hover,
    #theia-app-shell .ps [class^='ps__rail']:focus,
    #theia-app-shell .ps [class^='ps__rail'].ps--clicking,
    #theia-dialog-shell .ps [class^='ps__rail']:hover,
    #theia-dialog-shell .ps [class^='ps__rail']:focus,
    #theia-dialog-shell .ps [class^='ps__rail'].ps--clicking {
        background-color: var(--theia-scrollbar-active-rail-color);
    }

    #theia-app-shell .ps [class^='ps__rail']:hover > [class^='ps__thumb'],
    #theia-app-shell .ps [class^='ps__rail']:focus > [class^='ps__thumb'],
    #theia-dialog-shell .ps [class^='ps__rail']:hover > [class^='ps__thumb'],
    #theia-dialog-shell .ps [class^='ps__rail']:focus > [class^='ps__thumb'] {
        background: var(--theia-scrollbar-active-thumb-color);
    }

    #theia-app-shell .ps:hover > [class^='ps__rail'],
    #theia-app-shell .ps--focus > [class^='ps__rail'],
    #theia-app-shell .ps--scrolling-y > [class^='ps__rail'],
    #theia-dialog-shell .ps:hover > [class^='ps__rail'],
    #theia-dialog-shell .ps--focus > [class^='ps__rail'],
    #theia-dialog-shell .ps--scrolling-y > [class^='ps__rail'] {
        opacity: 1;
    }


    /*-----------------------------------------------------------------------------
| Monaco
|----------------------------------------------------------------------------*/

    /* Make horizontal scrollbar, decorations overview ruler and vertical scrollbar arrows opaque */
    .vs .monaco-scrollable-element > .scrollbar,
    .vs-dark .monaco-scrollable-element > .scrollbar,
    .decorationsOverviewRuler {
        background: var(--theia-scrollbar-rail-color);
    }

    .vs .monaco-scrollable-element > .scrollbar > .slider,
    .vs-dark .monaco-scrollable-element > .scrollbar > .slider {
        background: var(--theia-scrollbar-thumb-color) !important;
    }

    .vs .monaco-scrollable-element > .scrollbar:hover,
    .vs-dark .monaco-scrollable-element > .scrollbar:hover {
        background: var(--theia-scrollbar-active-rail-color);
    }

    .vs .monaco-scrollable-element > .scrollbar:hover > .slider,
    .vs-dark .monaco-scrollable-element > .scrollbar:hover > .slider {
        background: var(--theia-scrollbar-active-thumb-color) !important;
    }

    .monaco-scrollable-element > .visible.scrollbar.vertical:hover > .slider {
        background: var(--theia-scrollbar-thumb-color) !important;
    }

    .monaco-scrollable-element > .scrollbar.vertical > .slider {
        width: var(--theia-scrollbar-width) !important;
    }

    .monaco-scrollable-element > .scrollbar.vertical > .slider.active {
        background: var(--theia-scrollbar-active-thumb-color) !important;
    }

    .monaco-scrollable-element > .scrollbar.horizontal > .slider {
        height: var(--theia-scrollbar-width) !important;
    }

    .monaco-scrollable-element > .shadow.top {
        box-shadow: var(--theia-scrollbar-box-shadow-color) 0px 6px 6px -6px inset !important;
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017, 2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    .theia-Tree {
        overflow: hidden;
        color: var(--theia-ui-font-color1);
        font-size: var(--theia-ui-font-size1);
        max-height: calc(100% - var(--theia-border-width));
        position: relative;
    }

    .theia-Tree:focus .theia-TreeContainer.empty {
        outline-width: 1px;
        outline-style: solid;
        outline-offset: -1px;
        opacity: 1 !important;
        outline-color: var(--theia-accent-color3);
    }

    .theia-Tree:focus,
    .theia-TreeContainer .ReactVirtualized__List:focus {
        outline: 0;
        box-shadow: none;
        border: none;
    }

    .theia-TreeContainer {
        height: 100%;
    }

    .theia-TreeNode {
        line-height: 22px;
        display: flex;
    }

    .theia-TreeNode:hover {
        background: var(--theia-accent-color4);
        cursor: pointer;
    }

    .theia-TreeNodeContent {
        display: flex;
        align-items: baseline;
        width: calc(100% - var(--theia-scrollbar-rail-width));
    }

    .theia-ExpansionToggle {
        padding-right: var(--theia-ui-padding);
        min-width: 10px;
        display: flex;
        justify-content: center;
    }

    .theia-ExpansionToggle:hover {
        cursor: pointer;
    }

    .theia-ExpansionToggle.theia-mod-collapsed::before {
        font-family: FontAwesome;
        font-size: calc(var(--theia-content-font-size) * 0.8);
        content: "\F0DA";
    }

    .theia-ExpansionToggle:not(.theia-mod-collapsed)::before {
        font-family: FontAwesome;
        font-size: calc(var(--theia-content-font-size) * 0.8);
        content: "\F0DA";
        transform: rotate(45deg);
    }

    .theia-Tree:focus .theia-TreeNode.theia-mod-selected,
    .theia-Tree .ReactVirtualized__List:focus .theia-TreeNode.theia-mod-selected {
        background: var(--theia-accent-color3);
    }

    .theia-Tree .theia-TreeNode.theia-mod-selected {
        background: var(--theia-layout-color4);
    }

    .theia-TreeNode.theia-mod-not-selectable {
        color: var(--theia-ui-font-color2);
    }

    .theia-TreeNode.theia-mod-not-selectable:hover {
        background: none;
        cursor: default;
    }

    .theia-TreeNodeSegment {
        flex-grow: 0;
        user-select: none;
        white-space: nowrap;
    }

    .theia-TreeNodeSegmentGrow {
        flex-grow: 1 !important;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .theia-TreeNodeTail {
        min-width: 1rem;
        text-align: center;
    }

    .theia-TreeNodeSegment mark {
        background-color: var(--theia-word-highlight-match-color1);
        color: var(--theia-ui-font-color1);
    }

    .theia-tree-source-node-placeholder {
        text-align: center;
        font-style: italic;
        opacity: var(--theia-mod-disabled-opacity);;
    }

    .theia-tree-element-node {
        width: 100%
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    :root {
        --theia-statusBar-height: 19px;
    }

    #theia-statusBar {
        background: var(--theia-statusbar-color);
        display: flex;
        min-height: var(--theia-statusBar-height);
        white-space: nowrap;
    }

    #theia-statusBar .area {
        flex: 1;
        display: flex;
        align-items: stretch;
    }

    #theia-statusBar .area.left {
        justify-content: flex-start;
        padding-left: calc(var(--theia-ui-padding) * 2);
    }

    #theia-statusBar .area.right {
        justify-content: flex-end;
        padding-right: calc(var(--theia-ui-padding) * 2);
    }

    #theia-statusBar .area .element {
        color: var(--theia-statusBar-font-color);
        display: flex;
        align-items: center;
        font-size: var(--theia-statusBar-font-size);
    }

    #theia-statusBar .area .element > * {
        margin-left: calc(var(--theia-ui-padding) / 2);
    }

    #theia-statusBar .area .element > *:last-child {
        margin-right: calc(var(--theia-ui-padding) / 2);
    }

    #theia-statusBar .area .element.hasCommand:hover {
        background-color: rgba(255, 255, 255, 0.2);
        cursor: pointer;
    }

    #theia-statusBar .area.left .element {
        margin-right: var(--theia-ui-padding);
    }

    #theia-statusBar .area.right .element {
        margin-left: var(--theia-ui-padding);
    }

    #theia-statusBar .element {
        /* https://css-tricks.com/os-specific-fonts-css/#article-header-id-0 */
        /* https://github.com/Microsoft/vscode/blob/5dbdc8d19c8cf6dd10d558eabcc48bba962ea45f/src/vs/workbench/browser/media/style.css#L8-L24 */
        font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif;
        font-size: 12px;
        text-rendering: auto;
        text-decoration: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    .theia-caption-prefix {
        white-space: nowrap;
        padding-right: 2px;
    }

    .theia-caption-suffix {
        white-space: nowrap;
        padding: 0px 2px 0px 2px;
    }

    .theia-caption-suffix-tail {
        min-width: 1rem;
        text-align: center;
        font-size: var(--theia-ui-font-size0);
    }

    .theia-icon-wrapper {
        top: 0px !important;
        position: relative;
        display: inline-block
    }

    .theia-decorator-size {
        transform: scale(0.7);
        text-align: center;
        height: 100%;
        width: 100%;
    }

    .theia-decorator-sidebar-size {
        height: 100%;
        text-align: center;
        transform: scale(1.2);
        width: 100%;
    }

    .theia-top-right {
        position: absolute;
        bottom: 40%;
        left: 25%;
    }

    .theia-bottom-right {
        position: absolute;
        top: 40%;
        left: 25%;
    }

    .theia-bottom-right-sidebar {
        position: absolute;
        top: 80%;
        left: 50%;
    }

    .theia-bottom-left {
        position: absolute;
        top: 40%;
        right: 25%;
    }

    .theia-top-left {
        position: absolute;
        bottom: 40%;
        right: 25%;
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2018 Ericsson and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    ul.theia-aboutExtensions {
        height: 200px;
        overflow: hidden;
        overflow-y: scroll;
        list-style-type: none;
        padding: 0;
    }</style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/


    .theia-search-box {
        position: absolute;
        top: 0px;
        right: 0px;
        display: flex;
        align-items: baseline;
        box-shadow: var(--theia-border-width) var(--theia-border-width) var(--theia-border-color0);
        line-height: var(--theia-private-horizontal-tab-height);
        background-color: var(--theia-layout-color0);
        z-index: 1;
    }

    .theia-search-input {
        flex-grow: 1;
        line-height: calc(var(--theia-private-horizontal-tab-height) * 0.8);
        max-width: 6rem;
    }

    .theia-search-button {
        min-width: 1rem;
        text-align: center;
        flex-grow: 0;
        font-family: FontAwesome;
        font-size: calc(var(--theia-content-font-size) * 0.8);
        color: var(--theia-ui-font-color1);
    }

    .theia-search-button-next:before {
        content: "\F107";
    }

    .theia-search-button-next:hover:before {
        content: "\F107";
        background-color: var(--theia-layout-color2);
    }

    .theia-search-button-previous:before {
        content: "\F106";
    }

    .theia-search-button-previous:hover:before {
        content: "\F106";
        background-color: var(--theia-layout-color2);
    }

    .theia-search-button-close:before {
        content: "\F00D";
    }

    .theia-search-button-close:hover:before {
        content: "\F00D";
        background-color: var(--theia-layout-color2);
    }

    .theia-non-selectable {
        -webkit-user-select: none;
        -khtml-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        -o-user-select: none;
        user-select: none;
        cursor: default;
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    /* ANSI */
    .ansi-black-fg, .ansi-bright-black-fg {
        color: var(--theia-ansi-black-color);
    }

    .ansi-red-fg, .ansi-bright-red-fg {
        color: var(--theia-ansi-red-color);
    }

    .ansi-green-fg, .ansi-bright-green-fg {
        color: var(--theia-ansi-green-color);
    }

    .ansi-yellow-fg, .ansi-bright-yellow-fg {
        color: var(--theia-ansi-yellow-color);
    }

    .ansi-blue-fg, .ansi-bright-blue-fg {
        color: var(--theia-ansi-blue-color);
    }

    .ansi-magenta-fg, .ansi-bright-magenta-fg {
        color: var(--theia-ansi-magenta-color);
    }

    .ansi-cyan-fg, .ansi-bright-cyan-fg {
        color: var(--theia-ansi-cyan-color);
    }

    .ansi-white-fg, .ansi-bright-white-fg {
        color: var(--theia-ansi-white-color);
    }

    .ansi-black-bg, .ansi-bright-black-bg {
        background-color: var(--theia-ansi-black-background-color);
    }

    .ansi-red-bg, .ansi-bright-red-bg {
        background-color: var(--theia-ansi-red-background-color);
    }

    .ansi-green-bg, .ansi-bright-green-bg {
        background-color: var(--theia-ansi-green-background-color);
    }

    .ansi-yellow-bg, .ansi-bright-yellow-bg {
        background-color: var(--theia-ansi-yellow-background-color);
    }

    .ansi-blue-bg, .ansi-bright-blue-bg {
        background-color: var(--theia-ansi-blue-background-color);
    }

    .ansi-magenta-bg, .ansi-bright-magenta-bg {
        background-color: var(--theia-ansi-magenta-background-color);
    }

    .ansi-cyan-bg, .ansi-bright-cyan-bg {
        background-color: var(--theia-ansi-cyan-background-color);
    }

    .ansi-white-bg, .ansi-bright-white-bg {
        background-color: var(--theia-ansi-white-background-color);
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    :root {
        --theia-view-container-title-height: 22px;
        --theia-view-container-content-height: calc(100% - var(--theia-view-container-title-height));
    }


    .theia-view-container {
        height: 100%;
        display: flex;
        flex-direction: column;
    }

    .theia-view-container > .p-SplitPanel {
        height: 100%;
        width: 100%;
    }

    .theia-view-container > .p-SplitPanel > .p-SplitPanel-child {
        min-width: 50px;
        min-height: 22px;
    }

    .theia-view-container > .p-SplitPanel > .p-SplitPanel-handle:after {
        background-color: var(--theia-menu-color0);
        min-height: 2px;
        min-width: 2px
    }

    .theia-view-container > .p-SplitPanel > .p-SplitPanel-handle {
        background-color: var(--theia-menu-color0);
    }

    .theia-view-container .part {
        height: 100%;
    }

    .theia-view-container .part > .header {
        cursor: pointer;
        display: flex;
        align-items: center;
        background: var(--theia-menu-color0);
        line-height: var(--theia-view-container-title-height);
        z-index: 10;
    }

    .theia-view-container .part > .header .theia-ExpansionToggle {
        padding-left: 4px;
    }

    .theia-view-container > .p-SplitPanel[data-orientation='horizontal'] .part > .header .theia-ExpansionToggle::before {
        display: none;
        padding-left: 0px;
    }

    .theia-view-container > .p-SplitPanel[data-orientation='horizontal'] .part > .header .theia-ExpansionToggle {
        padding-left: 0px;
    }

    .theia-view-container .part > .header .label {
        flex: 1;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
    }

    .theia-view-container .part > .body {
        height: var(--theia-view-container-content-height);
        min-width: 50px;
        min-height: 50px;
    }

    .theia-view-container .part > .body .theia-tree-source-node-placeholder {
        padding-top: 4px;
        height: 100%;
    }

    .theia-view-container .part:hover > .body {
        display: block;
    }

    .theia-view-container .part.drop-target {
        background: rgba(33, 150, 243, 0.1);
        border: var(--theia-border-width) dashed var(--theia-brand-color1);
        transition-property: top, left, right, bottom;
        transition-duration: 150ms;
        transition-timing-function: ease;
    }

    .theia-view-container-drag-image {
        background: var(--theia-menu-color0);
        line-height: 22px;
        position: absolute;
        color: var(--theia-ui-font-color1);
        text-transform: uppercase;
        font-size: var(--theia-ui-font-size0);
        font-weight: 500;
        padding: 0 var(--theia-ui-padding) 0 var(--theia-ui-padding);
    }

    .p-TabBar-toolbar.theia-view-container-part-title {
        padding: 0px;
        padding-right: calc(var(--theia-ui-padding) * 2 / 3);
    }

    .theia-view-container-part-title .item > div {
        height: 16px;
        width: 16px;
        background-size: 16px;
        line-height: 16px;
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2018 Ericsson and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    :root {
        --theia-notification-count-height: 15.5px;
    }

    .notification-count-container {
        align-self: center;
        background-color: var(--theia-ui-font-color3);
        border-radius: 20px;
        color: var(--theia-ui-font-color0);
        display: flex;
        font-size: calc(var(--theia-ui-font-size0) * 0.8);
        font-weight: 500;
        height: var(--theia-notification-count-height);
        justify-content: center;
        min-width: 6px;
        padding: 0 5px;
        text-align: center;
    }

    .notification-count-container > .notification-count {
        align-self: center;
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2018 Ericsson and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    /* message container */
    .theia-alert-message-container {
        flex: 1;
        padding: 10px;
    }

    .theia-alert-message-container i {
        padding-right: 3px;
    }

    /* information message */
    .theia-info-alert {
        background-color: var(--theia-brand-color0);
        color: #ffffff;
        padding: 10px;
    }

    /* success message */
    .theia-success-alert {
        background-color: var(--theia-success-color0);
        color: #ffffff;
        padding: 10px;
    }

    /* warning message */
    .theia-warning-alert {
        background-color: var(--theia-warn-color0);
        color: var(--theia-warn-font-color0);
        padding: 10px;
    }

    /* error message */
    .theia-error-alert {
        background-color: var(--theia-error-color0);
        color: #ffffff;
        padding: 10px;
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2019 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    .theia-open-change-icon {
        width: 16px;
        height: 16px;
        background: var(--theia-icon-open-change) no-repeat;
    }

    .theia-open-file-icon {
        width: 16px;
        height: 16px;
        background: var(--theia-icon-open-file) no-repeat;
    }

    .theia-open-preview-icon {
        width: 16px;
        height: 16px;
        background: var(--theia-icon-preview) no-repeat;
    }

    .theia-open-json-icon {
        width: 16px;
        height: 16px;
        background: var(--theia-icon-open-json) no-repeat;
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2019 Ericsson and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    .theia-widget-noInfo {
        padding: calc(var(--theia-ui-padding) * 2);
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2019 Red Hat, Inc. and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    .theia-quick-title-container {
        display: flex;
        padding: calc(var(--theia-ui-padding) / 2);
        justify-content: space-between;
        align-items: center;
        background: var(--theia-layout-color4);
    }

    .theia-quick-title-left-bar {
        display: flex;
        text-align: left;
    }

    .theia-quick-title-right-bar {
        display: flex;
        text-align: right;
    }

    .theia-quick-title-header {
        text-align: center;
    }

    .theia-quick-title-button {
        width: 16px;
        height: 16px;
        display: flex;
        align-items: center;
        cursor: pointer;
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2019 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    .theia-progress-bar-container {
        width: 100%;
        height: 2px;
    }

    .theia-progress-bar {
        background-color: var(--theia-brand-color0);
        height: 2px;
        width: 3%;
        animation: progress-animation 1.3s 0s infinite cubic-bezier(0.645, 0.045, 0.355, 1);
    }

    @keyframes progress-animation {
        0% {
            margin-left: 0%;
            width: 3%;
        }
        60% {
            margin-left: 45%;
            width: 20%;
        }
        100% {
            margin-left: 99%;
            width: 1%;
        }
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017, 2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    /*-----------------------------------------------------------------------------
| General
|----------------------------------------------------------------------------*/

    body {
        margin: 0;
        padding: 0;
        overflow: hidden;
        font-family: var(--theia-ui-font-family);
        background: var(--theia-layout-color0);
    }

    .theia-maximized {
        position: fixed !important;
        top: 0 !important;
        bottom: 0 !important;
        left: 0 !important;
        right: 0 !important;
        width: auto !important;
        height: auto !important;
        z-index: 255 !important;
        background: var(--theia-layout-color0);
    }

    .theia-ApplicationShell {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background: var(--theia-layout-color0);
    }

    .theia-preload {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 50000;
        background: var(--theia-layout-color0);
        background-image: var(--theia-preloader);
        background-size: 60px 60px;
        background-repeat: no-repeat;
        background-attachment: fixed;
        background-position: center;
        transition: opacity 0.8s;
    }

    .theia-preload.theia-hidden {
        opacity: 0;
    }

    .theia-icon {
        width: 32px;
        height: 18px;
        margin: 5px;
        margin-left: 8px;
    }

    .theia-mod-disabled {
        opacity: var(--theia-mod-disabled-opacity);
    }

    .theia-header {
        text-transform: uppercase;
        font-size: var(--theia-ui-font-size0);
        font-weight: 450;
    }

    .p-Widget {
        font-size: var(--theia-ui-font-size1);
        color: var(--theia-ui-font-color1);
    }

    .p-Widget.p-mod-hidden {
        display: none !important;
    }

    .noselect {
        -webkit-touch-callout: none; /* iOS Safari */
        -webkit-user-select: none; /* Safari */
        -khtml-user-select: none; /* Konqueror HTML */
        -moz-user-select: none; /* Firefox */
        -ms-user-select: none; /* Internet Explorer/Edge */
        user-select: none;
        /* Non-prefixed version, currently
                                  supported by Chrome and Opera */
    }

    :focus {
        outline-width: 1px;
        outline-style: solid;
        outline-offset: -1px;
        opacity: 1 !important;
        outline-color: var(--theia-accent-color3);
    }

    ::selection {
        background: var(--theia-selected-text-background);
    }

    .p-Widget:focus {
        border: none;
        outline: none;
    }

    button.theia-button, .theia-button {
        border: none;
        color: var(--theia-ui-button-font-color);
        background-color: var(--theia-ui-button-color);
        min-width: 65px;
        outline: none;
        cursor: pointer;
        padding: 4px 9px;
        margin-left: calc(var(--theia-ui-padding) * 2);
        border-radius: 1px;
        box-shadow: 0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 1px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 1px -2px rgba(0, 0, 0, 0.12);
        transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
    }

    button.theia-button:hover, .theia-button:hover, .theia-button:focus {
        background-color: var(--theia-ui-button-color-hover);
    }

    button.secondary, .theia-button.secondary {
        color: var(--theia-ui-button-font-color-secondary);
        background-color: var(--theia-ui-button-color-secondary);
    }

    button.secondary:hover, .theia-button.secondary:hover {
        background-color: var(--theia-ui-button-color-secondary-hover);
    }

    button.theia-button[disabled], .theia-button[disabled] {
        opacity: 0.6;
        color: var(--theia-ui-button-font-color-disabled);
        background-color: var(--theia-ui-button-color-disabled);
        cursor: default;
    }

    button.secondary[disabled], .theia-button.secondary[disabled] {
        color: var(--theia-ui-button-font-color-secondary-disabled);
        background-color: var(--theia-ui-button-color-secondary-disabled);
    }

    .p-Widget select {
        color: var(--theia-ui-font-color1);
        font-size: var(--theia-ui-font-size1);
        border-radius: 0;
        border: 1px solid var(--theia-border-color1);
        background: var(--theia-layout-color2);
        outline: none;
    }

    textarea {
        font-family: var(--theia-ui-font-family);
    }

    /*-----------------------------------------------------------------------------
| Import children style files
|----------------------------------------------------------------------------*/
    </style>
    <style id="theia-theme" type="text/css">/**
 * google-material-color v1.2.6
 * https://github.com/danlevan/google-material-color
 */
    :root {
        --md-red-50: #FFEBEE;
        --md-red-100: #FFCDD2;
        --md-red-200: #EF9A9A;
        --md-red-300: #E57373;
        --md-red-400: #EF5350;
        --md-red-500: #F44336;
        --md-red-600: #E53935;
        --md-red-700: #D32F2F;
        --md-red-800: #C62828;
        --md-red-900: #B71C1C;
        --md-red-A100: #FF8A80;
        --md-red-A200: #FF5252;
        --md-red-A400: #FF1744;
        --md-red-A700: #D50000;

        --md-pink-50: #FCE4EC;
        --md-pink-100: #F8BBD0;
        --md-pink-200: #F48FB1;
        --md-pink-300: #F06292;
        --md-pink-400: #EC407A;
        --md-pink-500: #E91E63;
        --md-pink-600: #D81B60;
        --md-pink-700: #C2185B;
        --md-pink-800: #AD1457;
        --md-pink-900: #880E4F;
        --md-pink-A100: #FF80AB;
        --md-pink-A200: #FF4081;
        --md-pink-A400: #F50057;
        --md-pink-A700: #C51162;

        --md-purple-50: #F3E5F5;
        --md-purple-100: #E1BEE7;
        --md-purple-200: #CE93D8;
        --md-purple-300: #BA68C8;
        --md-purple-400: #AB47BC;
        --md-purple-500: #9C27B0;
        --md-purple-600: #8E24AA;
        --md-purple-700: #7B1FA2;
        --md-purple-800: #6A1B9A;
        --md-purple-900: #4A148C;
        --md-purple-A100: #EA80FC;
        --md-purple-A200: #E040FB;
        --md-purple-A400: #D500F9;
        --md-purple-A700: #AA00FF;

        --md-deep-purple-50: #EDE7F6;
        --md-deep-purple-100: #D1C4E9;
        --md-deep-purple-200: #B39DDB;
        --md-deep-purple-300: #9575CD;
        --md-deep-purple-400: #7E57C2;
        --md-deep-purple-500: #673AB7;
        --md-deep-purple-600: #5E35B1;
        --md-deep-purple-700: #512DA8;
        --md-deep-purple-800: #4527A0;
        --md-deep-purple-900: #311B92;
        --md-deep-purple-A100: #B388FF;
        --md-deep-purple-A200: #7C4DFF;
        --md-deep-purple-A400: #651FFF;
        --md-deep-purple-A700: #6200EA;

        --md-indigo-50: #E8EAF6;
        --md-indigo-100: #C5CAE9;
        --md-indigo-200: #9FA8DA;
        --md-indigo-300: #7986CB;
        --md-indigo-400: #5C6BC0;
        --md-indigo-500: #3F51B5;
        --md-indigo-600: #3949AB;
        --md-indigo-700: #303F9F;
        --md-indigo-800: #283593;
        --md-indigo-900: #1A237E;
        --md-indigo-A100: #8C9EFF;
        --md-indigo-A200: #536DFE;
        --md-indigo-A400: #3D5AFE;
        --md-indigo-A700: #304FFE;

        --md-blue-50: #E3F2FD;
        --md-blue-100: #BBDEFB;
        --md-blue-200: #90CAF9;
        --md-blue-300: #64B5F6;
        --md-blue-400: #42A5F5;
        --md-blue-500: #2196F3;
        --md-blue-600: #1E88E5;
        --md-blue-700: #1976D2;
        --md-blue-800: #1565C0;
        --md-blue-900: #0D47A1;
        --md-blue-A100: #82B1FF;
        --md-blue-A200: #448AFF;
        --md-blue-A400: #2979FF;
        --md-blue-A700: #2962FF;

        --md-light-blue-50: #E1F5FE;
        --md-light-blue-100: #B3E5FC;
        --md-light-blue-200: #81D4FA;
        --md-light-blue-300: #4FC3F7;
        --md-light-blue-400: #29B6F6;
        --md-light-blue-500: #03A9F4;
        --md-light-blue-600: #039BE5;
        --md-light-blue-700: #0288D1;
        --md-light-blue-800: #0277BD;
        --md-light-blue-900: #01579B;
        --md-light-blue-A100: #80D8FF;
        --md-light-blue-A200: #40C4FF;
        --md-light-blue-A400: #00B0FF;
        --md-light-blue-A700: #0091EA;

        --md-cyan-50: #E0F7FA;
        --md-cyan-100: #B2EBF2;
        --md-cyan-200: #80DEEA;
        --md-cyan-300: #4DD0E1;
        --md-cyan-400: #26C6DA;
        --md-cyan-500: #00BCD4;
        --md-cyan-600: #00ACC1;
        --md-cyan-700: #0097A7;
        --md-cyan-800: #00838F;
        --md-cyan-900: #006064;
        --md-cyan-A100: #84FFFF;
        --md-cyan-A200: #18FFFF;
        --md-cyan-A400: #00E5FF;
        --md-cyan-A700: #00B8D4;

        --md-teal-50: #E0F2F1;
        --md-teal-100: #B2DFDB;
        --md-teal-200: #80CBC4;
        --md-teal-300: #4DB6AC;
        --md-teal-400: #26A69A;
        --md-teal-500: #009688;
        --md-teal-600: #00897B;
        --md-teal-700: #00796B;
        --md-teal-800: #00695C;
        --md-teal-900: #004D40;
        --md-teal-A100: #A7FFEB;
        --md-teal-A200: #64FFDA;
        --md-teal-A400: #1DE9B6;
        --md-teal-A700: #00BFA5;

        --md-green-50: #E8F5E9;
        --md-green-100: #C8E6C9;
        --md-green-200: #A5D6A7;
        --md-green-300: #81C784;
        --md-green-400: #66BB6A;
        --md-green-500: #4CAF50;
        --md-green-600: #43A047;
        --md-green-700: #388E3C;
        --md-green-800: #2E7D32;
        --md-green-900: #1B5E20;
        --md-green-A100: #B9F6CA;
        --md-green-A200: #69F0AE;
        --md-green-A400: #00E676;
        --md-green-A700: #00C853;

        --md-light-green-50: #F1F8E9;
        --md-light-green-100: #DCEDC8;
        --md-light-green-200: #C5E1A5;
        --md-light-green-300: #AED581;
        --md-light-green-400: #9CCC65;
        --md-light-green-500: #8BC34A;
        --md-light-green-600: #7CB342;
        --md-light-green-700: #689F38;
        --md-light-green-800: #558B2F;
        --md-light-green-900: #33691E;
        --md-light-green-A100: #CCFF90;
        --md-light-green-A200: #B2FF59;
        --md-light-green-A400: #76FF03;
        --md-light-green-A700: #64DD17;

        --md-lime-50: #F9FBE7;
        --md-lime-100: #F0F4C3;
        --md-lime-200: #E6EE9C;
        --md-lime-300: #DCE775;
        --md-lime-400: #D4E157;
        --md-lime-500: #CDDC39;
        --md-lime-600: #C0CA33;
        --md-lime-700: #AFB42B;
        --md-lime-800: #9E9D24;
        --md-lime-900: #827717;
        --md-lime-A100: #F4FF81;
        --md-lime-A200: #EEFF41;
        --md-lime-A400: #C6FF00;
        --md-lime-A700: #AEEA00;

        --md-yellow-50: #FFFDE7;
        --md-yellow-100: #FFF9C4;
        --md-yellow-200: #FFF59D;
        --md-yellow-300: #FFF176;
        --md-yellow-400: #FFEE58;
        --md-yellow-500: #FFEB3B;
        --md-yellow-600: #FDD835;
        --md-yellow-700: #FBC02D;
        --md-yellow-800: #F9A825;
        --md-yellow-900: #F57F17;
        --md-yellow-A100: #FFFF8D;
        --md-yellow-A200: #FFFF00;
        --md-yellow-A400: #FFEA00;
        --md-yellow-A700: #FFD600;

        --md-amber-50: #FFF8E1;
        --md-amber-100: #FFECB3;
        --md-amber-200: #FFE082;
        --md-amber-300: #FFD54F;
        --md-amber-400: #FFCA28;
        --md-amber-500: #FFC107;
        --md-amber-600: #FFB300;
        --md-amber-700: #FFA000;
        --md-amber-800: #FF8F00;
        --md-amber-900: #FF6F00;
        --md-amber-A100: #FFE57F;
        --md-amber-A200: #FFD740;
        --md-amber-A400: #FFC400;
        --md-amber-A700: #FFAB00;

        --md-orange-50: #FFF3E0;
        --md-orange-100: #FFE0B2;
        --md-orange-200: #FFCC80;
        --md-orange-300: #FFB74D;
        --md-orange-400: #FFA726;
        --md-orange-500: #FF9800;
        --md-orange-600: #FB8C00;
        --md-orange-700: #F57C00;
        --md-orange-800: #EF6C00;
        --md-orange-900: #E65100;
        --md-orange-A100: #FFD180;
        --md-orange-A200: #FFAB40;
        --md-orange-A400: #FF9100;
        --md-orange-A700: #FF6D00;

        --md-deep-orange-50: #FBE9E7;
        --md-deep-orange-100: #FFCCBC;
        --md-deep-orange-200: #FFAB91;
        --md-deep-orange-300: #FF8A65;
        --md-deep-orange-400: #FF7043;
        --md-deep-orange-500: #FF5722;
        --md-deep-orange-600: #F4511E;
        --md-deep-orange-700: #E64A19;
        --md-deep-orange-800: #D84315;
        --md-deep-orange-900: #BF360C;
        --md-deep-orange-A100: #FF9E80;
        --md-deep-orange-A200: #FF6E40;
        --md-deep-orange-A400: #FF3D00;
        --md-deep-orange-A700: #DD2C00;

        --md-brown-50: #EFEBE9;
        --md-brown-100: #D7CCC8;
        --md-brown-200: #BCAAA4;
        --md-brown-300: #A1887F;
        --md-brown-400: #8D6E63;
        --md-brown-500: #795548;
        --md-brown-600: #6D4C41;
        --md-brown-700: #5D4037;
        --md-brown-800: #4E342E;
        --md-brown-900: #3E2723;

        --md-grey-50: #FAFAFA;
        --md-grey-100: #F5F5F5;
        --md-grey-200: #EEEEEE;
        --md-grey-300: #E0E0E0;
        --md-grey-400: #BDBDBD;
        --md-grey-500: #9E9E9E;
        --md-grey-600: #757575;
        --md-grey-700: #616161;
        --md-grey-800: #2e2e2e;
        --md-grey-900: #212121;

        --md-blue-grey-50: #ECEFF1;
        --md-blue-grey-100: #CFD8DC;
        --md-blue-grey-200: #b0bec5;
        --md-blue-grey-300: #90A4AE;
        --md-blue-grey-400: #78909C;
        --md-blue-grey-500: #607D8B;
        --md-blue-grey-600: #546E7A;
        --md-blue-grey-700: #455A64;
        --md-blue-grey-800: #37474F;
        --md-blue-grey-900: #263238;

    }

    /*
The following CSS variables define the main public API for styling Theia.
These variables should be used by all extensions wherever possible. In other
words, extensions should not define custom colors, sizes, etc. unless
absolutely necessary. This enables users to adapt the visual theme of Theia
by changing these variables.

Many variables appear in ordered sequences (0,1,2,...). For most of these
sequences, colors go from dark to bright for dark themes, and from bright to
dark for bright themes. A few sequences are used to create contrast against
the others, e.g. font and accent colors, and thus their brightness goes the
other way around.

Throughout Theia, we are mostly following principles from Google's Material
Design when selecting colors. We are not, however, following all of MD as it
is not optimized for dense, information rich UIs.
*/


    :root {

        /* Borders: Width and color (bright to dark) */

        --theia-border-width: 1px;
        --theia-panel-border-width: 2px;
        --theia-border-color0: var(--md-grey-100);
        --theia-border-color1: var(--md-grey-200);
        --theia-border-color2: var(--md-grey-300);
        --theia-border-color3: var(--md-grey-500);


        /* UI fonts: Family, size and color (dark to bright)
    ---------------------------------------------------
     The UI font CSS variables are used for the typography all of the Theia
     user interface elements that are not directly user-generated content.
  */

        --theia-ui-font-scale-factor: 1.2;
        --theia-ui-font-size0: calc(var(--theia-ui-font-size1) / var(--theia-ui-font-scale-factor));
        --theia-ui-font-size1: 13px; /* Base font size */
        --theia-ui-font-size2: calc(var(--theia-ui-font-size1) * var(--theia-ui-font-scale-factor));
        --theia-ui-font-size3: calc(var(--theia-ui-font-size2) * var(--theia-ui-font-scale-factor));
        --theia-ui-icon-font-size: 14px; /* Ensures px perfect FontAwesome icons */
        --theia-ui-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;

        --theia-ui-font-color0: var(--md-grey-900);
        --theia-ui-font-color1: var(--md-grey-700);
        --theia-ui-font-color2: var(--md-grey-500);
        --theia-ui-font-color3: var(--md-grey-300);

        /* Special font colors */

        --theia-ui-icon-font-color: #ffffff;
        --theia-ui-bar-font-color0: var(--theia-ui-font-color0);
        --theia-ui-bar-font-color1: var(--theia-ui-font-color1);

        /* Use the inverse UI colors against the brand/accent/warn/error colors. */

        --theia-inverse-ui-font-color0: rgba(255, 255, 255, 1.0);
        --theia-inverse-ui-font-color2: rgba(255, 255, 255, 0.7);
        --theia-inverse-ui-font-color3: rgba(255, 255, 255, 0.5);

        /* Content fonts: Family, size and color (dark to bright)
     Content font variables are used for typography of user-generated content.
  */

        --theia-content-font-size: 13px;
        --theia-content-line-height: 1.5;
        --theia-content-font-color0: black;
        --theia-content-font-color1: black;
        --theia-content-font-color2: var(--md-grey-700);
        --theia-content-font-color3: var(--md-grey-500);

        --theia-code-font-size: 13px;
        --theia-code-line-height: 17px;
        --theia-code-padding: 5px;
        --theia-code-font-family: Menlo, Monaco, Consolas, "Droid Sans Mono", "Courier New", monospace, "Droid Sans Fallback";
        --theia-terminal-font-family: monospace;
        --theia-ui-padding: 6px;

        /* Tab Icon Colors */
        --theia-tab-icon-color: var(--theia-ui-font-color1);
        --theia-tab-font-color: #000;

        /* Main layout colors (bright to dark)
    ------------------------------------ */

        --theia-layout-color0: #ffffff;
        --theia-layout-color1: #f3f3f3;
        --theia-layout-color2: #ececec;
        --theia-layout-color3: #dcdcdc;
        --theia-layout-color4: #dcdcdc;

        /* Brand colors */

        --theia-brand-color0: var(--md-blue-700);
        --theia-brand-color1: var(--md-blue-500);
        --theia-brand-color2: var(--md-blue-300);
        --theia-brand-color3: var(--md-blue-100);

        /* Secondary Brand colors */

        --theia-secondary-brand-color0: var(--md-grey-700);
        --theia-secondary-brand-color1: var(--md-grey-500);
        --theia-secondary-brand-color2: var(--md-grey-300);
        --theia-secondary-brand-color3: var(--md-grey-100);

        /* Accent colors (dark to bright): Use these to create contrast to layout colors. */

        --theia-accent-color0: var(--md-blue-900);
        --theia-accent-color1: #2b75c0;
        --theia-accent-color2: #4496da;
        --theia-accent-color3: #c0dbf1;
        --theia-accent-color4: #d7eaf8;

        /* Accent colors with opacity */

        --theia-transparent-accent-color0: hsla(210, 63%, 46%, 0.3);
        --theia-transparent-accent-color1: hsla(207, 66%, 56%, 0.3);
        --theia-transparent-accent-color2: hsla(207, 64%, 85%, 0.3);
        --theia-transparent-accent-color3: hsla(205, 70%, 91%, 0.3);

        /* State colors (warn, error, success, info)
    ------------------------------------------ */

        --theia-warn-color0: var(--md-amber-500);
        --theia-warn-color1: var(--md-amber-400);
        --theia-warn-color2: var(--md-amber-300);
        --theia-warn-color3: var(--md-amber-200);

        --theia-warn-font-color0: var(--md-grey-900);

        --theia-error-color0: var(--md-red-400);
        --theia-error-color1: var(--md-red-300);
        --theia-error-color2: var(--md-red-200);
        --theia-error-color3: var(--md-red-100);

        --theia-error-font-color0: var(--md-grey-300);

        --theia-success-color0: var(--md-green-500);
        --theia-success-color1: var(--md-green-300);
        --theia-success-color2: var(--md-green-100);
        --theia-success-color3: var(--md-green-50);

        --theia-success-font-color0: var(--md-grey-300);

        --theia-info-color0: var(--md-cyan-700);
        --theia-info-color1: var(--md-cyan-500);
        --theia-info-color2: var(--md-cyan-300);
        --theia-info-color3: var(--md-cyan-100);

        --theia-info-font-color0: var(--md-grey-300);

        --theia-disabled-color0: var(--md-grey-500);
        --theia-disabled-color1: var(--md-grey-300);
        --theia-disabled-color2: var(--md-grey-200);
        --theia-disabled-color3: var(--md-grey-50);

        --theia-added-color0: rgba(0, 255, 0, 0.8);
        --theia-removed-color0: rgba(230, 0, 0, 0.8);
        --theia-modified-color0: rgba(0, 100, 150, 0.8);

        /* Background for selected text */
        --theia-selected-text-background: var(--theia-accent-color3);

        /* Colors to highlight words in widgets like tree or editors */

        --theia-word-highlight-color0: rgba(168, 172, 148, 0.7);
        --theia-word-highlight-color1: rgba(253, 255, 0, 0.2);
        --theia-word-highlight-match-color0: rgba(234, 92, 0, 0.33);
        --theia-word-highlight-match-color1: rgba(234, 92, 0, 0.5);
        --theia-word-highlight-replace-color0: rgba(155, 185, 85, 0.2);

        /* Icons */
        --theia-icon-close: url();
        --theia-sprite-y-offset: 0px;
        --theia-icon-circle: url();
        --theia-icon-case-sensitive: url();
        --theia-icon-regex: url();
        --theia-icon-whole-word: url();
        --theia-icon-refresh: url();
        --theia-icon-expand: url();
        --theia-icon-close-all: url();
        --theia-icon-collapse: url();
        --theia-icon-collapse-all: url();
        --theia-icon-clear: url();
        --theia-icon-replace: url();
        --theia-icon-replace-all: url();
        --theia-icon-open-file: url();
        --theia-icon-open-change: url();
        --theia-icon-preview: url();
        --theia-icon-open-json: url();

        /* Scrollbars */
        --theia-scrollbar-width: 10px;
        --theia-scrollbar-rail-width: 10px;
        --theia-scrollbar-thumb-color: hsla(0, 0%, 61%, .4);
        --theia-scrollbar-rail-color: transparent;
        --theia-scrollbar-active-thumb-color: hsla(0, 0%, 39%, .4);
        --theia-scrollbar-active-rail-color: transparent;
        --theia-scrollbar-box-shadow-color: #DDD;

        /* Menu */
        --theia-menu-color0: var(--theia-layout-color3);
        --theia-menu-color1: var(--theia-layout-color0);
        --theia-menu-color2: var(--theia-layout-color3);

        /* Statusbar */
        --theia-statusbar-color: var(--theia-brand-color0);
        --theia-statusBar-font-color: var(--theia-inverse-ui-font-color0);
        --theia-statusBar-font-size: 12px;

        /* Buttons */
        --theia-ui-button-color: var(--theia-brand-color1);
        --theia-ui-button-color-hover: var(--theia-brand-color0);
        --theia-ui-button-font-color: var(--theia-inverse-ui-font-color0);
        --theia-ui-button-color-secondary: var(--theia-secondary-brand-color1);
        --theia-ui-button-color-secondary-hover: var(--theia-secondary-brand-color0);
        --theia-ui-button-font-color-secondary: var(--theia-inverse-ui-font-color0);
        --theia-ui-button-color-disabled: var(--theia-accent-color3);
        --theia-ui-button-font-color-disabled: var(--theia-ui-font-color2);
        --theia-ui-button-color-secondary-disabled: var(--theia-disabled-color1);
        --theia-ui-button-font-color-secondary-disabled: var(--theia-ui-font-color2);

        /* Expand/collapse element */
        --theia-ui-expand-button-color: var(--theia-accent-color4);
        --theia-ui-expand-button-font-color: var(--theia-ui-font-color1);

        /* Dialogs */
        --theia-ui-dialog-header-color: var(--theia-brand-color1);
        --theia-ui-dialog-header-font-color: var(--theia-inverse-ui-font-color0);
        --theia-ui-dialog-color: var(--theia-layout-color0);
        --theia-ui-dialog-font-color: var(--theia-ui-font-color1);

        /* Variables */
        --theia-variable-name-color: #9B46B0;
        --theia-variable-value-color: rgba(108, 108, 108, 0.8);
        --theia-number-variable-color: #09885A;
        --theia-boolean-variable-color: #0000FF;
        --theia-string-variable-color: #A31515;

        /* ANSI color */
        --theia-ansi-black-color: gray;
        --theia-ansi-red-color: #BE1717;
        --theia-ansi-green-color: #338A2F;
        --theia-ansi-yellow-color: #BEB817;
        --theia-ansi-blue-color: darkblue;
        --theia-ansi-magenta-color: darkmagenta;
        --theia-ansi-cyan-color: darkcyan;
        --theia-ansi-white-color: #BDBDBD;

        /* ANSI background color */
        --theia-ansi-black-background-color: gray;
        --theia-ansi-red-background-color: #BE1717;
        --theia-ansi-green-background-color: #338A2F;
        --theia-ansi-yellow-background-color: #BEB817;
        --theia-ansi-blue-background-color: darkblue;
        --theia-ansi-magenta-background-color: darkmagenta;
        --theia-ansi-cyan-background-color: darkcyan;
        --theia-ansi-white-background-color: #BDBDBD;

        /* Output */
        --theia-output-font-color: var(--theia-ui-font-color1);

        /* Opacity for disabled mod  */
        --theia-mod-disabled-opacity: 0.4;
    }
    </style>
    <style type="text/css">/*
 | File Icons
 | @link https://github.com/file-icons
 | @author Daniel Brooker https://github.com/DanBrooker
 */

    /* ----------------------------[ Colors ]---------------------------------- */

    /*============================================================================*
	PALETTE
	Base16 colours from https://github.com/chriskempson/base16
/*============================================================================*/
    .light-red:before {
        color: #c97071;
    }

    .medium-red:before {
        color: #ac4142;
    }

    .dark-red:before {
        color: #742c2d;
    }

    .light-green:before {
        color: #a6ba7b;
    }

    .medium-green:before {
        color: #90a959;
    }

    .dark-green:before {
        color: #66783e;
    }

    .light-yellow:before {
        color: #fae0bc;
    }

    .medium-yellow:before {
        color: #ee9e2e;
    }

    .dark-yellow:before {
        color: #d88511;
    }

    .light-blue:before {
        color: #6098b0;
    }

    .medium-blue:before {
        color: #6a9fb5;
    }

    .dark-blue:before {
        color: #46788d;
    }

    .light-maroon:before {
        color: #be7953;
    }

    .medium-maroon:before {
        color: #8f5536;
    }

    .dark-maroon:before {
        color: #573421;
    }

    .light-purple:before {
        color: #c7a4c0;
    }

    .medium-purple:before {
        color: #aa759f;
    }

    .dark-purple:before {
        color: #825078;
    }

    .light-orange:before {
        color: #d99762;
    }

    .medium-orange:before {
        color: #d28445;
    }

    .dark-orange:before {
        color: #a35f27;
    }

    .light-cyan:before {
        color: #6bb0a4;
    }

    .medium-cyan:before {
        color: #75b5aa;
    }

    .dark-cyan:before {
        color: #4d9085;
    }

    .light-pink:before {
        color: #ff4ddb;
    }

    .medium-pink:before {
        color: #ff00cc;
    }

    .dark-pink:before {
        color: #b3008f;
    }

    .theme-colour-check {
        background: #ffffff;
    }

    /* ----------------------------[ Fonts ]---------------------------------- */

    @font-face {
        font-family: FontAwesome;
        font-weight: normal;
        font-style: normal;
    }

    @font-face {
        font-family: Mfizz;
        font-weight: normal;
        font-style: normal;
    }

    @font-face {
        font-family: Devicons;
        font-weight: normal;
        font-style: normal;
    }

    @font-face {
        font-family: file-icons;
        font-weight: normal;
        font-style: normal;
    }

    @font-face {
        font-family: octicons;
        font-weight: normal;
        font-style: normal;
    }

    /* ----------------------------[ Icons ]---------------------------------- */

    .icon:before {
        font-weight: normal;
        font-style: normal;
        text-align: center;
        width: 16px;
        line-height: 1;
        position: relative;
        display: inline-block;
        -webkit-font-smoothing: antialiased;
    }

    /*============================================================================*
  Octicons
  https://github.com/github/octicons
/*============================================================================*/

    .binary-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F094";
    }

    .book-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F007";
    }

    .brew-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F069";
        font-size: 15px;
        left: 1px;
    }

    .checklist-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F076";
        font-size: 17px;
        left: 1px;
    }

    .code-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F05F";
    }

    .database-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F096";
    }

    .gear-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F02F";
    }

    .git-commit-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F01F";
    }

    .git-merge-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F023";
    }

    .github-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F00A";
    }

    .graph-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F043";
    }

    .image-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F012";
    }

    .key-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F049";
    }

    .link-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F0B0";
    }

    .markdown-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F0C9";
    }

    .package-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F0C4";
    }

    .ruby-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F047";
    }

    .secret-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F08C";
    }

    .squirrel-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F0B2";
        font-size: 15px;
    }

    .text-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F011";
    }

    .zip-icon:before {
        font-family: octicons;
        font-size: 16px;
        top: 1px;
        content: "\F013";
    }


    /*============================================================================*
  FontAwesome
  http://fortawesome.github.io/Font-Awesome/cheatsheet
/*============================================================================*/

    .android-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F17B";
        font-size: 16px;
        top: 1px;
    }

    .at-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F1FA";
        font-size: 15px;
        top: 1px;
    }

    .audio-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F028";
        font-size: 15px;
        top: 1px;
    }

    .bullhorn-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F0A1";
        font-size: 16px;
        top: 2px;
    }

    .calc-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F1EC";
        font-size: 14px;
    }

    .coffee-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F0F4";
        font-size: 14px;
        top: 1px;
    }

    .css3-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F13C";
        top: 0;
    }

    .circle-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F111";
        font-size: 16px;
        top: 1px;
    }

    .earth-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F0AC";
        font-size: 15px;
    }

    .gears-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F085";
        font-size: 15px;
    }

    .html5-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F13B";
        font-size: 15px;
        top: 1px;
    }

    .mobile-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F10B";
        font-size: 20px;
        top: 2px;
    }

    .moon-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F186";
        font-size: 16px;
        top: 1px;
    }

    .music-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F001";
        font-size: 15px;
    }

    .print-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F02F";
        font-size: 15px;
        top: 2px;
    }

    .recycle-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F1B8";
        font-size: 15px;
        top: 2px;
    }

    .rss-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F143";
        font-size: 16px;
        top: 2px;
    }

    .smarty-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F0EB";
        font-size: 15px;
    }

    .sourcemap-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F279";
        font-size: 14px;
    }

    .sun-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F185";
        font-size: 14px;
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .toc-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F03A";
        font-size: 15px;
        top: 2px;
    }

    .twig-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F1BB";
        font-size: 14px;
    }

    .pdf-icon:before {
        font-family: FontAwesome;
        font-size: 13px;
        content: "\F1C1";
        font-size: 14px;
    }


    /*============================================================================*
  Mfizz
  http://mfizz.com/oss/font-mfizz
/*============================================================================*/

    .apache-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F102";
        top: 3px;
        font-size: 15px;
    }

    .archlinux-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "A";
        top: 1px;
        font-size: 15px;
    }

    .c-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F106";
        top: 1px;
        font-size: 13px;
    }

    .cpp-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F10B";
        top: 1px;
    }

    .csharp-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F10C";
        top: 1px;
    }

    .debian-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F111";
        top: 1px;
    }

    .elixir-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F113";
        top: 1px;
    }

    .gnome-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F119";
        top: 1px;
    }

    .haskell-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F121";
        top: 2px;
        font-size: 16px;
    }

    .java-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F126";
        top: 2px;
        font-size: 16px;
    }

    .js-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F129";
        top: 1px;
        font-size: 14px;
    }

    .msql-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F136";
        top: 2px;
        font-size: 15px;
        text-shadow: 0 0 0;
    }

    .objc-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F13E";
        top: 2px;
        font-size: 16px;
    }

    .osx-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F141";
        top: 1px;
    }

    .perl-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F142";
        top: 1px;
    }

    .python-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F14C";
        top: 1px;
    }

    .red-hat-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F14E";
        top: 2px;
    }

    .scala-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F154";
        top: 1px;
    }

    .sql-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F10E";
        top: 1px;
    }

    .svg-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F15C";
        top: 1px;
    }

    .tt-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "TT";
    }

    .x11-icon:before {
        font-family: Mfizz;
        font-size: 14px;
        content: "\F16E";
        top: 1px;
        font-size: 13px;
    }


    /*============================================================================*
  Devicons
  http://vorillaz.github.io/devicons
/*============================================================================*/

    .angular-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E653";
    }

    .appcelerator-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E6AB";
    }

    .appstore-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E613";
    }

    .asp-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E67F";
    }

    .atom-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E664";
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .backbone-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E652";
    }

    .bootstrap-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E647";
        font-size: 15px;
        top: 2px;
    }

    .bower-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E64D";
        text-shadow: 0 0 0;
    }

    .chrome-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E643";
    }

    .clojure-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E668";
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .compass-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E661";
        font-size: 14px;
        top: 2px;
    }

    .dart-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E698";
        font-size: 15px;
        top: 2px;
    }

    .dlang-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E6AF";
    }

    .dojo-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E61C";
        font-size: 16px;
        top: 4px;
        transform: scale(1.2);
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .dropbox-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E607";
    }

    .eclipse-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E69E";
    }

    .erlang-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E6B1";
    }

    .extjs-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E68E";
    }

    .fsharp-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E6A7";
        left: 1px;
        top: 2px;
    }

    .git-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E602";
        font-size: 15px;
        top: 2px;
    }

    .heroku-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E67B";
    }

    .jquery-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E650";
        font-size: 15px;
        top: 2px;
    }

    .jqueryui-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E654";
        font-size: 15px;
        top: 2px;
    }

    .laravel-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E63F";
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .materialize-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E6B6";
        transform: scale(1.2);
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .modernizr-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E620";
    }

    .mootools-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E68F";
        text-shadow: 0 0 0;
    }

    .node-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E618";
    }

    .pod-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E669";
        font-size: 15px;
        top: 2px;
    }

    .prolog-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E6A1";
    }

    .rails-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E63B";
    }

    .raphael-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E65F";
        font-size: 15px;
    }

    .requirejs-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E670";
    }

    .rust-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E6A8";
    }

    .sass-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E64B";
    }

    .sencha-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E68C";
    }

    .snapsvg-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E65E";
    }

    .swift-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E655";
        left: -1px;
    }

    .travis-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E67E";
        font-size: 15px;
        top: 2px;
    }

    .uikit-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E673";
        font-size: 15px;
        top: 2px;
    }

    .unity3d-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E621";
    }

    .vim-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E6C5";
    }

    .vs-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E60C";
        font-size: 14px;
        top: 2px;
    }

    .windows-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E60F";
        font-size: 14px;
        top: 2px;
    }

    .yeoman-icon:before {
        font-family: Devicons;
        font-size: 16px;
        top: 3px;
        content: "\E67A";
    }


    /*============================================================================*
  Custom file icons
  See https://github.com/file-icons/source/#adding-new-icons
/*============================================================================*/

    ._1c-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\A5EA";
        top: 3px;
        font-size: 16px;
    }

    ._1c-alt-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA28";
        top: 3px;
        font-size: 16px;
    }

    .abap-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E92B";
        top: 2px;
    }

    .access-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9EA";
        top: 2px;
    }

    .ada-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E90B";
        top: 3px;
        font-size: 17px;
    }

    .ae-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9F3";
        top: 2px;
    }

    .ahk-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E932";
        top: 2px;
    }

    .ai-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E6B4";
        top: 2px;
    }

    .alloy-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E935";
        top: 2px;
    }

    .alpine-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9FF";
        top: 2px;
        font-size: 16px;
    }

    .ampl-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E94E";
        top: 3px;
        font-size: 16px;
        left: 1px;
    }

    .amx-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E99B";
        top: 3px;
        font-size: 16px;
    }

    .ant-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E93E";
        top: 4px;
        font-size: 18px;
        transform: scale(1.1);
    }

    .antlr-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E92C";
        top: 3px;
    }

    .api-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E92D";
        top: 2px;
    }

    .apl-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\234B";
        top: 2px;
    }

    .apple-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E925";
        top: 1px;
    }

    .appveyor-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E923";
        top: 2px;
    }

    .arc-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E92F";
        top: 2px;
    }

    .arduino-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E930";
        top: 3px;
        font-size: 16px;
    }

    .arttext-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\24D0";
        top: 2px;
    }

    .as-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E92E";
        top: 1px;
        font-size: 14px;
    }

    .asciidoc-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E918";
        top: 1px;
        font-size: 14px;
    }

    .ats-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E934";
        top: 2px;
    }

    .audacity-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9F9";
        top: 2px;
    }

    .augeas-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E931";
        top: 2px;
    }

    .autoit-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E933";
        top: 2px;
        font-size: 16px;
    }

    .babel-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E91F";
        top: 2px;
        left: 1px;
    }

    .bibtex-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E601";
        top: 2px;
        font-size: 16px;
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .blender-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9FA";
        top: 2px;
    }

    .bluespec-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E93C";
        top: 1px;
        font-size: 13px;
        left: 1px;
    }

    .boo-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E939";
        top: 2px;
    }

    .boot-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F103";
        top: 2px;
        font-size: 16px;
    }

    .brain-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E93A";
        top: 2px;
    }

    .brakeman-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9D6";
        top: 2px;
    }

    .bro-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E93B";
        top: 3px;
        font-size: 16px;
    }

    .broccoli-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E922";
        top: 1px;
        font-size: 14px;
    }

    .byond-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E962";
        top: 2px;
    }

    .cabal-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9C2";
        top: 2px;
    }

    .cake-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9E3";
        top: 2px;
    }

    .cakefile-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E924";
        top: 2px;
    }

    .cakephp-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9D3";
        top: 1px;
        font-size: 14px;
    }

    .cc-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9D5";
        top: 2px;
        font-size: 16px;
    }

    .ceylon-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E94F";
        top: 2px;
    }

    .cf-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E929";
        top: 2px;
    }

    .chai-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "c";
        top: 3px;
        font-size: 16px;
    }

    .chapel-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E950";
        top: 2px;
    }

    .chartjs-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA0B";
        top: 2px;
    }

    .chuck-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E943";
        top: 2px;
    }

    .circleci-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA12";
        top: 2px;
        font-size: 14px;
    }

    .cirru-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E951";
        top: 2px;
        text-shadow: 0 0 0;
    }

    .cl-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E972";
        top: 2px;
        text-shadow: 0 0 0;
    }

    .clarion-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E952";
        top: 1px;
        font-size: 14px;
        left: 1px;
    }

    .clean-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E95B";
        top: 2px;
        font-size: 16px;
    }

    .click-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E95C";
        top: 2px;
    }

    .clips-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E940";
        top: 3px;
        font-size: 18px;
    }

    .cljs-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F104";
        top: 2px;
    }

    .cmake-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E93F";
        top: 1px;
        font-size: 14px;
    }

    .codecov-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\2602";
        top: 2px;
    }

    .composer-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E683";
        top: 3px;
        font-size: 17px;
    }

    .config-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F07C";
        top: 2px;
        font-size: 14px;
    }

    .cordova-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA11";
        top: 2px;
    }

    .coq-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E95F";
        top: 2px;
        font-size: 16px;
        left: 1px;
    }

    .cp-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E942";
        top: 3px;
        font-size: 17px;
    }

    .creole-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E95E";
        top: 2px;
    }

    .crystal-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E902";
        top: 2px;
        left: 1px;
    }

    .csound-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9F0";
        top: 2px;
    }

    .csscript-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9E2";
        top: 2px;
    }

    .cucumber-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F02B";
        top: 3px;
    }

    .cython-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E963";
        top: 2px;
    }

    .d3-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA10";
        top: 2px;
    }

    .darcs-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E964";
        top: 2px;
    }

    .dashboard-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F07D";
        top: 2px;
        font-size: 13px;
    }

    .dbase-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9F1";
        top: 2px;
    }

    .default-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\1F5CC";
        top: 2px;
        font-size: 14px;
    }

    .diff-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E960";
        top: 2px;
    }

    .docker-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F106";
        top: 3px;
        font-size: 18px;
    }

    .doxygen-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E928";
        top: 1px;
        font-size: 13px;
    }

    .doge-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E946";
        top: 2px;
    }

    .dyalog-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E90C";
        top: 1px;
        font-size: 14px;
        left: 1px;
    }

    .dylib-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA15";
        top: 2px;
    }

    .e-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "E";
        top: 1px;
        font-size: 14px;
    }

    .eagle-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E965";
        top: 2px;
    }

    .ec-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9C9";
        top: 2px;
    }

    .ecere-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E966";
        top: 3px;
        font-size: 16px;
    }

    .editorconfig-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA1B";
        top: 3px;
    }

    .eiffel-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E967";
        top: 2px;
        font-size: 16px;
    }

    .electron-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA27";
        top: 3px;
        font-size: 16px;
        text-shadow: 0 0 0;
    }

    .elm-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F102";
        top: 2px;
    }

    .em-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E968";
        top: 3px;
        font-size: 16px;
    }

    .ember-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E61B";
        top: 2px;
        font-size: 14px;
    }

    .emacs-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E926";
        top: 2px;
    }

    .eq-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA0A";
        top: 5px;
    }

    .eslint-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA0F";
        top: 3px;
        font-size: 16px;
    }

    .excel-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9EE";
        top: 2px;
    }

    .fabfile-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E94B";
        top: 2px;
        font-size: 16px;
    }

    .factor-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E96A";
        top: 3px;
        font-size: 18px;
        left: -2px;
        transform: scale(1.2);
    }

    .fancy-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E96B";
        top: 2px;
        font-size: 16px;
    }

    .fantom-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E96F";
        top: 2px;
        left: 1px;
    }

    .fbx-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9FC";
        top: 2px;
    }

    .ff-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\FB00";
        top: 3px;
    }

    .finder-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9E9";
        top: 3px;
        font-size: 16px;
    }

    .flow-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E921";
        top: 1px;
    }

    .flux-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E969";
        top: 2px;
    }

    .font-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E90F";
        top: 1px;
        font-size: 14px;
        left: 1px;
    }

    .fortran-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E90A";
        top: 1px;
        font-size: 14px;
        left: 1px;
    }

    .freemarker-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E970";
        top: 2px;
        font-size: 16px;
        left: 1px;
    }

    .frege-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E96E";
        top: 2px;
        font-size: 16px;
        left: 1px;
    }

    .fuelux-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA09";
        top: 3px;
        font-size: 16px;
        left: 2px;
        transform: scale(1.15);
        text-shadow: 0 0 0;
    }

    .gams-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E973";
        top: 2px;
        left: 1px;
    }

    .gap-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E971";
        top: 3px;
        font-size: 16px;
        left: 1px;
    }

    .gdb-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA08";
        top: 3px;
        font-size: 16px;
        transform: scale(1.15);
        text-shadow: 0 0 0;
    }

    .genshi-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E976";
        top: 3px;
    }

    .gentoo-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E96D";
        top: 1px;
        font-size: 14px;
        left: 1px;
    }

    .gf-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E978";
        top: 2px;
    }

    .glade-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E938";
        top: 2px;
    }

    .glyphs-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "G";
        top: 3px;
    }

    .gml-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E975";
        top: 3px;
        font-size: 16px;
    }

    .gn-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA25";
        top: 2px;
    }

    .gnu-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E679";
        top: 2px;
        font-size: 16px;
        text-shadow: 0 0 0;
    }

    .go-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E624";
        top: 3px;
    }

    .godot-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E974";
        top: 2px;
    }

    .golo-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E979";
        top: 2px;
    }

    .gosu-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E97A";
        top: 2px;
    }

    .gradle-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E903";
        top: 3px;
        font-size: 16px;
        left: 1px;
    }

    .graphql-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E97C";
        top: 2px;
    }

    .graphviz-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E97D";
        top: 4px;
        font-size: 17px;
        left: 1px;
    }

    .groovy-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E904";
        top: 4px;
        font-size: 17px;
        left: -1px;
    }

    .grunt-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E611";
        top: 1px;
        font-size: 14px;
    }

    .gulp-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E610";
        top: 2px;
        font-size: 16px;
    }

    .hack-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9CE";
        top: 2px;
    }

    .haml-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F15B";
        top: 2px;
    }

    .harbour-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E97B";
        top: 2px;
        font-size: 16px;
        text-shadow: 0 0 0;
    }

    .hashicorp-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E97E";
        top: 2px;
    }

    .haxe-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E907";
        top: 2px;
    }

    .hy-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E97F";
        top: 2px;
    }

    .idl-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E947";
        top: 3px;
        font-size: 18px;
    }

    .idris-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E983";
        top: 2px;
        font-size: 16px;
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .igorpro-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E980";
        top: 2px;
        font-size: 16px;
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .indesign-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9F4";
        top: 2px;
    }

    .inform7-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E984";
        top: 2px;
        font-size: 16px;
        text-shadow: 0 0 0;
    }

    .inno-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E985";
        top: 2px;
    }

    .io-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E981";
        top: 1px;
        font-size: 13px;
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .ioke-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E982";
        top: 2px;
    }

    .ionic-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F14B";
        top: 2px;
    }

    .isabelle-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E945";
        top: 2px;
        font-size: 16px;
    }

    .j-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E937";
        top: 1px;
        font-size: 13px;
    }

    .jade-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E90D";
        top: 1px;
        font-size: 14px;
    }

    .jake-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E948";
        top: 3px;
        font-size: 16px;
    }

    .jenkins-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E667";
        top: 3px;
        font-size: 18px;
        text-shadow: 0 0 0;
    }

    .jinja-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E944";
        top: 2px;
    }

    .jsonld-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E958";
        top: 3px;
        font-size: 17px;
    }

    .jsx-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9E6";
        top: 1px;
        font-size: 14px;
    }

    .julia-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\26EC";
        top: 1px;
        font-size: 14px;
    }

    .jupyter-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E987";
        top: 3px;
        font-size: 16px;
    }

    .karma-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9CD";
        top: 2px;
    }

    .keynote-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9E5";
        top: 2px;
    }

    .khronos-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9F8";
        top: 2px;
    }

    .kivy-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E901";
        top: 2px;
    }

    .knockout-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "K";
        top: 2px;
    }

    .kotlin-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E989";
        top: 1px;
        font-size: 14px;
    }

    .krl-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E988";
        top: 1px;
        font-size: 14px;
    }

    .labview-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E98A";
        top: 2px;
        font-size: 16px;
    }

    .lasso-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E98C";
        top: 2px;
        left: 1px;
    }

    .leaflet-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA07";
        top: 2px;
    }

    .lean-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "L";
        top: 1px;
        font-size: 13px;
    }

    .lein-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F105";
        top: 3px;
        font-size: 16px;
        text-shadow: 0 0 0;
        transform: scale(1.15);
    }

    .lfe-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E94C";
        top: 2px;
        font-size: 16px;
    }

    .lightwave-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9FB";
        top: 2px;
    }

    .lisp-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E908";
        top: 3px;
        font-size: 17px;
    }

    .llvm-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E91D";
        top: 3px;
        font-size: 17px;
    }

    .logtalk-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E98D";
        top: 2px;
        text-shadow: 0 0 0;
    }

    .lookml-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E98E";
        top: 2px;
        font-size: 16px;
        text-shadow: 0 0 0;
    }

    .ls-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E914";
        top: 2px;
        font-size: 14px;
    }

    .lsl-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E98B";
        top: 1px;
    }

    .lua-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E91B";
        top: 2px;
        font-size: 14px;
    }

    .mako-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E98F";
        top: 4px;
        font-size: 16px;
    }

    .mapbox-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E941";
        top: 1px;
        font-size: 13px;
    }

    .marko-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E920";
        top: 4px;
        font-size: 18px;
        left: -1px;
        transform: scale(1.05);
    }

    .mathematica-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E990";
        top: 2px;
        font-size: 16px;
    }

    .mathjax-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA06";
        top: 2px;
    }

    .matlab-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E991";
        top: 2px;
    }

    .max-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E993";
        top: 2px;
    }

    .maxscript-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E900";
        top: 2px;
    }

    .maya-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9F6";
        top: 2px;
        font-size: 16px;
    }

    .manpage-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E936";
        top: 3px;
    }

    .mediawiki-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E954";
        top: 2px;
        font-size: 16px;
    }

    .mercury-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E994";
        top: 3px;
        font-size: 16px;
        transform: scale(1.2);
    }

    .metal-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "M";
        top: 1px;
        left: 1px;
    }

    .meteor-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E6A5";
        top: 1px;
    }

    .minecraft-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9DC";
        top: 2px;
    }

    .mirah-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E995";
        top: 2px;
    }

    .mocha-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\26FE";
        top: 2px;
        font-size: 17px;
    }

    .model-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9E8";
        top: 2px;
        font-size: 16px;
    }

    .modula2-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E996";
        top: 2px;
    }

    .monkey-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E997";
        top: 3px;
        font-size: 18px;
        left: -1px;
    }

    .mruby-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA18";
        top: 2px;
    }

    .mupad-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9CA";
        top: 3px;
        font-size: 16px;
    }

    .mustache-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E60F";
        top: 2px;
        font-size: 16px;
    }

    .nant-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9E1";
        top: 3px;
        transform: scale(1.2);
    }

    .neko-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA05";
        top: 2px;
    }

    .netlogo-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E99C";
        top: 2px;
        left: 1px;
    }

    .newrelic-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9D7";
        top: 2px;
    }

    .nginx-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F146B";
        top: 2px;
    }

    .nib-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\2712";
        top: 2px;
    }

    .nimrod-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E998";
        top: 2px;
    }

    .nit-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E999";
        top: 2px;
    }

    .nix-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E99A";
        top: 3px;
        font-size: 16px;
    }

    .nmap-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E94D";
        top: 3px;
        font-size: 16px;
        transform: scale(1.1);
    }

    .nodemon-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA26";
        top: 2px;
    }

    .normalize-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA04";
        top: 3px;
        font-size: 16px;
    }

    .npm-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E91C";
        top: 3px;
        font-size: 17px;
    }

    .nsis-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA1E";
        top: 3px;
        font-size: 16px;
    }

    .numpy-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E99D";
        top: 2px;
        font-size: 14px;
    }

    .nuget-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9D9";
        top: 2px;
    }

    .nunjucks-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E953";
        top: 2px;
        font-size: 16px;
    }

    .nvidia-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E95D";
        top: 2px;
    }

    .objj-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E99E";
        top: 2px;
    }

    .ocaml-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E91A";
        top: 1px;
        font-size: 14px;
    }

    .onenote-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9EB";
        top: 2px;
    }

    .ooc-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9CB";
        top: 2px;
    }

    .opa-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\2601";
        top: 2px;
    }

    .opencl-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E99F";
        top: 2px;
        font-size: 16px;
    }

    .openoffice-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9E4";
        top: 2px;
    }

    .org-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E917";
        top: 1px;
        font-size: 14px;
        left: 1px;
    }

    .owl-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E957";
        top: 2px;
    }

    .ox-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9A1";
        top: 3px;
        font-size: 16px;
        text-shadow: 0 0 0;
    }

    .oxygene-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9BF";
        top: 2px;
    }

    .oz-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9BE";
        top: 2px;
    }

    .pan-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9BD";
        top: 2px;
    }

    .papyrus-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9BC";
        top: 2px;
    }

    .parrot-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9BB";
        top: 3px;
        font-size: 16px;
    }

    .pascal-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E92A";
        top: 2px;
    }

    .patch-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E961";
        top: 2px;
    }

    .pawn-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\265F";
        top: 1px;
        font-size: 14px;
    }

    .perl6-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E96C";
        top: 2px;
    }

    .phalcon-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E94A";
        top: 2px;
    }

    .php-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F147";
        top: 1px;
        font-size: 14px;
        left: 1px;
    }

    .pickle-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9C4";
        top: 2px;
    }

    .pike-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9B9";
        top: 4px;
        font-size: 16px;
        -webkit-font-smoothing: subpixel-antialiased;
        transform: scale(1.15);
    }

    .pogo-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9B8";
        top: 3px;
        font-size: 14px;
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .pony-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9B7";
        top: 3px;
        font-size: 16px;
    }

    .pointwise-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E977";
        top: 2px;
    }

    .postcss-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E910";
        top: 2px;
        font-size: 14px;
    }

    .postscript-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E955";
        top: 2px;
        left: 1px;
    }

    .povray-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "P";
        top: 2px;
        left: 1px;
    }

    .powerbuilder-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA14";
    }

    .powerpoint-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9EC";
        top: 2px;
    }

    .powershell-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9DA";
        top: 2px;
        font-size: 16px;
    }

    .premiere-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9F5";
        top: 2px;
    }

    .processing-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9A0";
        top: 2px;
    }

    .progress-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9C0";
        top: 2px;
        font-size: 16px;
        transform: scale(1.2);
    }

    .propeller-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9B5";
        top: 3px;
        font-size: 16px;
    }

    .protractor-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9DE";
        top: 3px;
    }

    .psd-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E6B8";
        top: 2px;
    }

    .pug-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA13";
        top: 3px;
        font-size: 16px;
    }

    .pug-alt-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9D0";
        top: 3px;
        font-size: 16px;
    }

    .puppet-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F0C3";
        top: 2px;
        left: 1px;
    }

    .purebasic-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\1B5";
        top: 2px;
    }

    .purescript-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9B2";
        top: 3px;
    }

    .r-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E905";
        top: 3px;
        font-size: 17px;
    }

    .racket-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9B1";
        top: 2px;
        left: 1px;
    }

    .raml-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E913";
        top: 1px;
        font-size: 14px;
    }

    .rascal-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA24";
        top: 2px;
    }

    .rdoc-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9B0";
        top: 2px;
        left: 1px;
    }

    .react-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F100";
        top: 2px;
    }

    .rebol-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9AE";
        top: 1px;
        font-size: 13px;
    }

    .reason-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA1D";
        top: 3px;
    }

    .red-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9AD";
        top: 3px;
        font-size: 16px;
    }

    .regex-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "*";
        top: 1px;
        font-size: 12px;
        left: 1px;
    }

    .rexx-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA16";
        top: 2px;
        font-size: 14px;
        left: 1px;
    }

    .riot-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E919";
        top: 4px;
        font-size: 18px;
    }

    .robot-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9AC";
        top: 2px;
        font-size: 14px;
    }

    .rollup-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA20";
        top: 2px;
    }

    .rst-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9CC";
        top: 3px;
        font-size: 16px;
    }

    .sage-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9AB";
        top: 3px;
        font-size: 16px;
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .saltstack-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E915";
        top: 2px;
        font-size: 14px;
    }

    .sas-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E95A";
        top: 2px;
    }

    .sbt-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9D2";
        top: 2px;
        font-size: 14px;
    }

    .scd-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9A2";
        top: 2px;
    }

    .scad-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E911";
        top: 2px;
        font-size: 14px;
    }

    .scheme-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\3BB";
        top: 2px;
    }

    .scilab-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9A9";
        top: 3px;
        font-size: 18px;
        left: -1px;
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .scrutinizer-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9D4";
        top: 2px;
        font-size: 14px;
    }

    .self-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9A8";
        top: 3px;
        font-size: 16px;
        text-shadow: 0 0 0;
        transform: scale(1.2);
    }

    .sf-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9DB";
        top: 2px;
    }

    .shen-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9A7";
        top: 2px;
        font-size: 16px;
    }

    .shopify-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9CF";
        top: 2px;
    }

    .shuriken-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\272B";
        top: 2px;
        font-size: 14px;
    }

    .sigils-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\1F764";
        top: 3px;
        font-size: 16px;
        text-shadow: 0 0 0;
    }

    .silverstripe-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E800";
        top: 2px;
    }

    .sketch-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E927";
        top: 2px;
    }

    .slash-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9A6";
        top: 2px;
    }

    .snyk-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA1C";
        top: 2px;
        font-size: 16px;
    }

    .sparql-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E959";
        top: 2px;
    }

    .sqf-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9A5";
        top: 1px;
        text-shadow: 0 0 0;
    }

    .sqlite-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9DD";
        top: 3px;
    }

    .stan-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9A4";
        top: 2px;
    }

    .stata-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9A3";
        top: 2px;
    }

    .storyist-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9EF";
        top: 2px;
        font-size: 16px;
    }

    .strings-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9E0";
        top: 2px;
    }

    .stylelint-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E93D";
        top: 2px;
    }

    .stylus-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "s";
        top: 2px;
        left: 1px;
    }

    .sublime-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E986";
        top: 2px;
    }

    .svn-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA17";
        top: 2px;
    }

    .sysverilog-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9C3";
        top: 2px;
    }

    .tag-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F015";
        top: 2px;
        font-size: 14px;
    }

    .tcl-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E956";
        top: 2px;
        font-size: 16px;
    }

    .terminal-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F0C8";
        top: 2px;
        font-size: 14px;
    }

    .tern-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\1F54A";
        top: 4px;
        font-size: 16px;
    }

    .terraform-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E916";
        top: 1px;
        font-size: 14px;
    }

    .tex-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E600";
        top: 4px;
        font-size: 16px;
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .textile-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "t";
        top: 2px;
    }

    .textmate-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\2122";
        top: 2px;
        font-size: 16px;
    }

    .thor-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9D8";
        top: 2px;
    }

    .ts-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\2A6";
        top: 1px;
        font-size: 14px;
    }

    .tsx-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9E7";
        top: 1px;
        font-size: 14px;
    }

    .turing-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9B6";
        top: 2px;
    }

    .txl-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9C1";
        top: 2px;
    }

    .typedoc-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9FE";
        top: 2px;
    }

    .typings-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9DF";
        top: 2px;
    }

    .uno-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9B3";
        top: 2px;
    }

    .unreal-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "u";
        top: 2px;
    }

    .urweb-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9BA";
        top: 4px;
        font-size: 18px;
        left: -1px;
        text-shadow: 0 0 0;
    }

    .webpack-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E91E";
        top: 3px;
    }

    .wercker-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA19";
        top: 2px;
    }

    .word-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9ED";
        top: 2px;
    }

    .v8-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA1F";
        top: 3px;
        font-size: 16px;
    }

    .vagrant-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "V";
        top: 2px;
        font-size: 14px;
    }

    .varnish-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9B4";
        top: 1px;
        font-size: 14px;
    }

    .verilog-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E949";
        top: 2px;
    }

    .vhdl-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9AA";
        top: 2px;
    }

    .video-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\F057";
        top: 1px;
        font-size: 14px;
    }

    .vue-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E906";
        top: 3px;
    }

    .x10-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\2169";
        top: 2px;
    }

    .xmos-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "X";
        top: 1px;
        font-size: 14px;
    }

    .xojo-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9AF";
        top: 2px;
    }

    .xpages-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9C5";
        top: 2px;
    }

    .xtend-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9C6";
        top: 2px;
    }

    .yang-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\262F";
        top: 2px;
    }

    .yarn-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA1A";
        top: 2px;
        font-size: 16px;
    }

    .yui-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\EA00";
        top: 2px;
    }

    .zbrush-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9F2";
        top: 2px;
        font-size: 16px;
    }

    .zephir-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9C7";
        top: 2px;
        -webkit-font-smoothing: subpixel-antialiased;
    }

    .zimpl-icon:before {
        font-family: file-icons;
        font-size: 15px;
        content: "\E9C8";
        top: 2px;
        font-size: 16px;
        left: 1px;
    }
    </style>
    <script charset="utf-8" src="editor_files/23.js"></script>
    <script charset="utf-8" src="editor_files/21.js"></script>
    <script src="editor_files/index.js" id="aplus-sufei"></script>
    <script src="editor_files/a.js"></script>
    <script src="editor_files/et_n.js"></script>
    <script charset="utf-8" src="editor_files/24.js"></script>
    <script charset="utf-8" src="editor_files/0.js"></script>
    <script charset="utf-8" src="editor_files/1.js"></script>
    <script charset="utf-8" src="editor_files/3.js"></script>
    <script charset="utf-8" src="editor_files/18.js"></script>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    /*
  * Open and Save file dialogs
  */

    .dialogContent .theia-FileDialog,
    .dialogContent .theia-SaveFileDialog,
    .dialogContent .theia-ResponsiveFileDialog {
        height: 500px;
        width: 500px;
        background-color: var(--theia-layout-color0);
    }


    @media only screen and (max-height: 700px) {
        .dialogContent .theia-FileDialog,
        .dialogContent .theia-SaveFileDialog,
        .dialogContent .theia-ResponsiveFileDialog {
            height: 300px;
        }
    }

    .dialogContent .theia-NavigationPanel,
    .dialogContent .theia-FiltersPanel,
    .dialogContent .theia-FileNamePanel {
        display: block;
        position: relative;
        overflow: hidden;
    }

    .dialogContent .theia-NavigationPanel,
    .dialogContent .theia-FiltersPanel {
        min-height: 27px;
    }

    .dialogContent .theia-FileNamePanel {
        height: 31px;
    }

    /*
 * Navigation panel items
 */

    .dialogContent .theia-NavigationBack,
    .dialogContent .theia-NavigationForward,
    .dialogContent .theia-NavigationHome {
        position: absolute;
        top: 0px;
        line-height: 23px;
        cursor: pointer;
        outline: none;
    }

    .dialogContent .theia-NavigationBack:focus,
    .dialogContent .theia-NavigationForward:focus,
    .dialogContent .theia-NavigationHome:focus {
        outline: none;
        border: none;
        box-shadow: none;
    }

    .dialogContent .theia-NavigationBack {
        left: auto;
    }

    .dialogContent .theia-NavigationForward {
        left: 21px;
    }

    .dialogContent .theia-NavigationHome {
        left: 41px;
    }

    .dialogContent .theia-LocationListPanel {
        position: absolute;
        left: 72px;
        top: 1px;
    }

    .dialogContent .theia-LocationList {
        width: 427px;
        height: 21px;
        background: var(--theia-layout-color2) !important;
    }

    /*
 * Filters panel items
 */

    .dialogContent .theia-FiltersLabel {
        position: absolute;
        left: 1px;
        top: 0px;
        line-height: 27px;
    }

    .dialogContent .theia-FiltersListPanel {
        position: absolute;
        left: 72px;
        top: 3px;
    }

    .dialogContent .theia-FileTreeFiltersList {
        width: 427px;
        height: 21px;
        background: var(--theia-layout-color2) !important;
    }

    /*
 * File name panel items
 */

    .dialogContent .theia-FileNameLabel {
        position: absolute;
        left: 1px;
        top: 0px;
        line-height: 23px;
    }

    .dialogContent .theia-FileNameTextField {
        position: absolute;
        left: 72px;
        top: 0px;
        width: 420px;
    }

    /*
 * Control panel items
 */

    .dialogContent .theia-ControlPanel {
        display: flex;
        flex-direction: row;
        justify-content: flex-end;
        margin-bottom: 0px;
    }

    .dialogContent .theia-ControlPanel > * {
        margin-left: 4px;
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    .file-icon {
        /*
    Here, the `line-height` ensures that FontAwesome and `file-icons-js` container has the same height.
    Ideally, it would be 1 em, but since we set the max height above (and other places too) with 0.8
    multiplier, we use 0.8 em here too.
     */
        line-height: 0.8em;
    }

    .file-icon:before {
        font-size: calc(var(--theia-content-font-size) * 0.8);
        text-align: center;
        margin-right: 4px;
    }

    .theia-app-sides .file-icon {
        max-height: none;
        line-height: inherit;
    }

    .theia-app-sides .file-icon:before {
        font-size: var(--theia-private-sidebar-icon-size);
        margin-right: 0px;
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    .theia-file-tree-drag-image {
        position: absolute;
        /*
    make sure you don't see it flashing
     */
        top: -1000px;
        font-size: var(--theia-ui-font-size1);
        display: inline-block;
        padding: 1px calc(var(--theia-ui-padding) * 2);
        color: var(--theia-ui-font-color1);
        border-radius: 10px;
        background: var(--theia-accent-color2);
    }
    </style>
    <script charset="utf-8" src="editor_files/22.js"></script>
    <script charset="utf-8" src="editor_files/2.js"></script>
    <script charset="utf-8" src="editor_files/25.js"></script>
    <script charset="utf-8" src="editor_files/19.js"></script>
    <script charset="utf-8" src="editor_files/12.js"></script>
    <script charset="utf-8" src="editor_files/17.js"></script>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    #outputView {
        font-size: var(--theia-ui-font-size1);
        color: var(--theia-output-font-color);
    }

    #outputView #outputContents {
        overflow: auto;
        height: inherit;
        padding: 6px;
        box-sizing: border-box;
    }

    .theia-side-panel #outputView #outputContents {
        margin-left: 14px;
    }

    #outputView #outputChannelList {
        line-height: var(--theia-content-line-height);
        font-size: var(--theia-ui-font-size1);
        color: var(--theia-ui-font-color1);

        -webkit-appearance: none;
        -moz-appearance: none;
        background-image: linear-gradient(45deg, transparent 50%, var(--theia-ui-font-color1) 50%), linear-gradient(135deg, var(--theia-ui-font-color1) 50%, transparent 50%);
        background-position: calc(100% - 6px) 8px, calc(100% - 2px) 8px, 100% 0;
        background-size: 4px 5px;
        background-repeat: no-repeat;
        padding-left: 3px;
        padding-right: 15px;
    }

    #outputView #outputClear {
        background-image: var(--theia-icon-clear);
        background-position: center;
        background-repeat: no-repeat;
        display: inline-block;
        width: 21px;
        opacity: var(--theia-mod-disabled-opacity);;
    }

    #outputView #outputClear.enabled {
        opacity: 0.7;
        cursor: pointer;
    }

    #outputView #outputClear.enabled:hover {
        opacity: 1;
    }

    .output-tab-icon::before {
        content: "\F024"
    }
    </style>
    <script charset="utf-8" src="editor_files/10.js"></script>
    <script charset="utf-8" src="editor_files/9.js"></script>
    <script charset="utf-8" src="editor_files/11.js"></script>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    .theia-Files {
        height: 100%;
    }

    .theia-navigator-container {
        font-size: var(--theia-ui-font-size1);
        color: var(--theia-ui-font-color1);
        padding: 5px;
        position: relative;
    }

    .theia-navigator-container .open-workspace-button-container {
        margin: auto;
        margin-top: 5px;
        display: flex;
        justify-content: center;
        align-self: center;
    }

    .theia-navigator-container .center {
        text-align: center;
    }

    .p-Widget .open-workspace-button {
        padding: 4px 12px;
        width: calc(100% - var(--theia-ui-padding) * 4);
        margin-left: 0;
    }

    .navigator-tab-icon {
        -webkit-mask: url();
        mask: url();
    }
    </style>
    <script charset="utf-8" src="editor_files/14.js"></script>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    .theia-marker-container {
        font-size: var(--theia-ui-font-size1);
        color: var(--theia-ui-font-color1);
    }

    .theia-side-panel .theia-marker-container .noMarkers {
        padding-left: 19px;
    }

    .theia-marker-container .markerNode,
    .theia-marker-container .markerFileNode {
        display: flex;
        align-items: center;
    }

    .theia-marker-container .markerNode,
    .theia-marker-container .markerFileNode {
        width: calc(100% - 32px);
    }

    .theia-marker-container .markerNode div,
    .theia-marker-container .markerFileNode div {
        margin-right: 5px;
    }

    .theia-marker-container .markerFileNode .name,
    .theia-marker-container .markerFileNode .path {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .theia-marker-container .markerFileNode .path {
        font-size: var(--theia-ui-font-size0);
        color: var(--theia-ui-font-color2);
        align-self: flex-end;
        white-space: nowrap;
    }

    .theia-marker-container .error {
        color: var(--theia-error-color0);
    }

    .theia-marker-container .warning {
        color: var(--theia-warn-color0);
    }

    .theia-marker-container .information {
        color: var(--theia-info-color0);
    }

    .theia-marker-container .hint {
        color: var(--theia-success-color0);
    }

    .theia-marker-container .markerNode .position,
    .theia-marker-container .markerNode .owner,
    .theia-marker-container .markerNode .code {
        color: var(--theia-ui-font-color2);
        white-space: nowrap;
    }

    .theia-marker-container .markerNode .position,
    .theia-marker-container .markerNode .code {
        margin-left: 5px;
    }

    .theia-marker-container .markerNode .message {
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .problem-tab-icon::before {
        content: "\F06A"
    }

    .theia-marker-container .row-button-container {
        display: none;
    }

    .theia-marker-container .theia-TreeNodeContent:hover .row-button-container {
        display: flex;
        justify-content: flex-end;
        flex: 1;
        align-items: center;
        align-self: center;
    }

    .theia-marker-container .row-button-container .remove-node {
        background-image: var(--theia-icon-close);
        width: 15px;
        height: 15px;
    }
    </style>
    <script charset="utf-8" src="editor_files/16.js"></script>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017-2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    .outline-view-tab-icon::before {
        content: "\F03A"
    }

    .no-outline {
        color: var(--theia-ui-font-color0);
        text-align: left;
    }

    .theia-side-panel .no-outline {
        margin-left: 9px;
    }
    </style>
    <script charset="utf-8" src="editor_files/6.js"></script>
    <script async="async" type="text/javascript" src="editor_files/editor_002.js"></script>
    <link rel="stylesheet" type="text/css" data-name="vs/editor/editor.main" href="editor_files/editor.css">
    <script async="async" type="text/javascript" src="editor_files/editor.js"></script>
    <script async="async" type="text/javascript" src="editor_files/monaco_005.js"></script>
    <script async="async" type="text/javascript" src="editor_files/monaco_002.js"></script>
    <style type="text/css">.monaco-editor {
        padding-bottom: 5.6px;
        font-family: var(--theia-ui-font-family);
        font-size: inherit !important;
    }

    .monaco-editor, .monaco-editor-background {
        background: var(--theia-layout-color0);
    }

    .monaco-editor .margin {
        background: var(--theia-layout-color0);
    }

    .monaco-keybinding-key {
        color: var(--theia-ui-font-color1) !important;
    }

    /*
 * set z-index to 0, so tabs are not above overlay widgets
 */
    .p-TabBar.theia-app-centers {
        z-index: 0;
        display: flex;
    }

    /*
 * we need to disable the background image when using font awesome icons and file-icons
 */
    .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.fa,
    .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.file-icon {
        display: flex;
        justify-content: center;
        align-items: center;
        background-image: none;
        margin-right: 0px;
    }

    .monaco-quick-open-widget {
        background-color: var(--theia-layout-color1) !important;
    }

    .quick-open-entry .quick-open-row .monaco-icon-label .monaco-icon-label-description-container .monaco-highlighted-label .highlight {
        color: var(--theia-accent-color1);
    }

    .quick-open-entry .quick-open-row .monaco-icon-label .monaco-icon-label-description-container .label-description {
        color: var(--theia-ui-font-color2);
        font-size: calc(var(--theia-ui-font-size0) * 0.95);
    }

    .monaco-editor .zone-widget {
        position: absolute;
        z-index: 10;
    }

    .monaco-editor .zone-widget .zone-widget-container {
        border-top-style: solid;
        border-bottom-style: solid;
        border-top-width: 0;
        border-bottom-width: 0;
        border-top-color: var(--theia-accent-color2);
        border-bottom-color: var(--theia-accent-color2);
        position: relative;
    }

    .monaco-editor .parameter-hints-widget > .wrapper {
        overflow: hidden;
    }
    </style>
    <style type="text/css">.symbol-icon {
        background-repeat: no-repeat;
        overflow: hidden;
        min-width: 16px;
        height: 16px;
        margin-right: 4px;
    }

    .symbol-icon-center {
        align-self: center;
    }

    .symbol-icon.method {
        background-position: 0 calc(var(--theia-sprite-y-offset));
    }

    .symbol-icon.constant,
    .symbol-icon.variable {
        background-position: -22px calc(var(--theia-sprite-y-offset));
    }

    .symbol-icon.class {
        background-position: -42px calc(var(--theia-sprite-y-offset));
    }

    .symbol-icon.interface {
        background-position: -62px calc(var(--theia-sprite-y-offset));
    }

    .symbol-icon.module {
        background-position: -82px calc(var(--theia-sprite-y-offset));
    }

    .symbol-icon.property {
        background-position: -102px calc(var(--theia-sprite-y-offset));
    }

    .symbol-icon.enum {
        background-position: -122px calc(var(--theia-sprite-y-offset));
    }

    .symbol-icon.rule {
        background-position: -242px calc(var(--theia-sprite-y-offset));
    }

    .symbol-icon.file {
        background-position: -262px calc(var(--theia-sprite-y-offset));
    }</style>
    <style id="editorDecorationsStyle" type="text/css" media="screen"></style>
    <style type="text/css" media="screen" class="monaco-colors">.severity-icon.severity-error {
        background: url("data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M8.58318%202.02842C9.96435%202.16331%2011.2561%202.77279%2012.2383%203.75307C13.3643%204.87923%2013.9978%206.40584%2014%207.99829C14.0004%209.38617%2013.5196%2010.7313%2012.6396%2011.8045C11.7595%2012.8778%2010.5345%2013.6127%209.17333%2013.8841C7.81215%2014.1556%206.39895%2013.9467%205.1745%2013.2931C3.95005%2012.6394%202.99008%2011.5815%202.45814%2010.2995C1.92619%209.0175%201.85517%207.59072%202.25717%206.26222C2.65917%204.93373%203.50933%203.7857%204.66282%203.0137C5.8163%202.24171%207.20177%201.89351%208.58318%202.02842ZM8.68038%201.03316C10.292%201.19055%2011.7993%201.90184%2012.9453%203.04585C14.2587%204.35938%2014.9976%206.14013%2015%207.99764C15.0005%209.61695%2014.4396%2011.1864%2013.4129%2012.4385C12.3861%2013.6907%2010.9569%2014.5482%209.36889%2014.8648C7.78084%2015.1815%206.13211%2014.9378%204.70359%2014.1752C3.27506%2013.4127%202.1551%2012.1784%201.53449%2010.6828C0.913887%209.18708%200.831027%207.52251%201.30003%205.97259C1.76903%204.42268%202.76089%203.08331%204.10662%202.18265C5.45236%201.28199%207.06873%200.875761%208.68038%201.03316ZM5.52498%205L8.00004%207.47506L10.4751%205L11.1822%205.70711L8.70714%208.18217L11.1818%2010.6569L10.4747%2011.364L8.00004%208.88927L5.52535%2011.364L4.81824%2010.6569L7.29293%208.18217L4.81787%205.70711L5.52498%205Z%22%20fill%3D%22%23a1260d%22%2F%3E%3C%2Fsvg%3E") center center no-repeat;
        height: 16px;
        width: 16px;
    }

    .severity-icon.severity-warning {
        background: url("data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M14.12%2013.9725L15%2012.5L9.37927%202H7.61924L1.9985%2012.5L2.87852%2013.9725H14.12ZM2.87852%2012.9725L8.49925%202.47249L14.12%2012.9725H2.87852ZM7.98952%206H8.98802V10H7.98952V6ZM7.98952%2011H8.98802V12H7.98952V11Z%22%20fill%3D%22%23ddb100%22%2F%3E%3C%2Fsvg%3E") center center no-repeat;
        height: 16px;
        width: 16px;
    }

    .severity-icon.severity-info {
        background: url("data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3%207.5C3%204.46243%205.46243%202%208.5%202C11.5376%202%2014%204.46243%2014%207.5C14%2010.5376%2011.5376%2013%208.5%2013C5.46243%2013%203%2010.5376%203%207.5ZM2%207.5C2%203.91015%204.91015%201%208.5%201C12.0899%201%2015%203.91015%2015%207.5C15%2011.0899%2012.0899%2014%208.5%2014C4.91015%2014%202%2011.0899%202%207.5ZM8%204V5H9V4H8ZM8%206L8%2010H9L9%206H8Z%22%20fill%3D%22%23007acc%22%2F%3E%3C%2Fsvg%3E") center center no-repeat;
        height: 16px;
        width: 16px;
    }

    .severity-icon.severity-ignore {
        background: url("data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3%207.5C3%204.46243%205.46243%202%208.5%202C11.5376%202%2014%204.46243%2014%207.5C14%2010.5376%2011.5376%2013%208.5%2013C5.46243%2013%203%2010.5376%203%207.5ZM2%207.5C2%203.91015%204.91015%201%208.5%201C12.0899%201%2015%203.91015%2015%207.5C15%2011.0899%2012.0899%2014%208.5%2014C4.91015%2014%202%2011.0899%202%207.5ZM8%204V5H9V4H8ZM8%206L8%2010H9L9%206H8Z%22%20fill%3D%22%2375beff%22%2F%3E%3C%2Fsvg%3E") center center no-repeat;
        height: 16px;
        width: 16px;
    }

    .monaco-editor, .monaco-editor-background, .monaco-editor .inputarea.ime-input {
        background-color: #fffffe;
    }

    .monaco-editor, .monaco-editor .inputarea.ime-input {
        color: #000000;
    }

    .monaco-editor .margin {
        background-color: #fffffe;
    }

    .monaco-editor .rangeHighlight {
        background-color: rgba(253, 255, 0, 0.2);
    }

    .vs-whitespace {
        color: rgba(51, 51, 51, 0.2) !important;
    }

    .monaco-editor.vs .valueSetReplacement {
        outline: solid 2px #b9b9b9;
    }

    .monaco-editor .focused .selectionHighlight {
        background-color: rgba(173, 214, 255, 0.3);
    }

    .monaco-editor .selectionHighlight {
        background-color: rgba(173, 214, 255, 0.15);
    }

    .monaco-editor .wordHighlight {
        background-color: rgba(87, 87, 87, 0.25);
    }

    .monaco-editor .wordHighlightStrong {
        background-color: rgba(14, 99, 156, 0.25);
    }

    .monaco-editor .findOptionsWidget {
        background-color: #f3f3f3;
    }

    .monaco-editor .findOptionsWidget {
        box-shadow: 0 2px 8px #a8a8a8;
    }

    .monaco-editor .view-overlays .current-line {
        border: 2px solid #eeeeee;
    }

    .monaco-editor .margin-view-overlays .current-line-margin {
        border: 2px solid #eeeeee;
    }

    .monaco-editor .lines-content .cigr {
        box-shadow: 1px 0 0 0 #d3d3d3 inset;
    }

    .monaco-editor .lines-content .cigra {
        box-shadow: 1px 0 0 0 #939393 inset;
    }

    .monaco-editor .line-numbers {
        color: #237893;
    }

    .monaco-editor .current-line ~ .line-numbers {
        color: #0b216f;
    }

    .monaco-editor .minimap-slider, .monaco-editor .minimap-slider .minimap-slider-horizontal {
        background: rgba(100, 100, 100, 0.2);
    }

    .monaco-editor .minimap-slider:hover, .monaco-editor .minimap-slider:hover .minimap-slider-horizontal {
        background: rgba(100, 100, 100, 0.35);
    }

    .monaco-editor .minimap-slider.active, .monaco-editor .minimap-slider.active .minimap-slider-horizontal {
        background: rgba(0, 0, 0, 0.3);
    }

    .monaco-editor .minimap-shadow-visible {
        box-shadow: #dddddd -6px 0 6px -6px inset;
    }

    .monaco-editor .view-ruler {
        box-shadow: 1px 0 0 0 #d3d3d3 inset;
    }

    .monaco-editor .scroll-decoration {
        box-shadow: #dddddd 0 6px 6px -6px inset;
    }

    .monaco-editor .focused .selected-text {
        background-color: #add6ff;
    }

    .monaco-editor .selected-text {
        background-color: #e5ebf1;
    }

    .monaco-editor .cursor {
        background-color: #000000;
        border-color: #000000;
        color: #ffffff;
    }

    .monaco-diff-editor .diff-review-line-number {
        color: #237893;
    }

    .monaco-diff-editor .diff-review-shadow {
        box-shadow: #dddddd 0 -6px 6px -6px inset;
    }

    .monaco-editor .squiggly-error {
        background: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23e51400'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left;
    }

    .monaco-editor .squiggly-warning {
        background: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23e9a700'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left;
    }

    .monaco-editor .squiggly-info {
        background: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%2375beff'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left;
    }

    .monaco-editor .squiggly-hint {
        background: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%223%22%20width%3D%2212%22%3E%3Cg%20fill%3D%22%236c6c6c%22%3E%3Ccircle%20cx%3D%221%22%20cy%3D%221%22%20r%3D%221%22%2F%3E%3Ccircle%20cx%3D%225%22%20cy%3D%221%22%20r%3D%221%22%2F%3E%3Ccircle%20cx%3D%229%22%20cy%3D%221%22%20r%3D%221%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") no-repeat bottom left;
    }

    .showUnused .monaco-editor .squiggly-inline-unnecessary {
        opacity: 0.467;
    }

    .monaco-editor .squiggly-inline-deprecated {
        text-decoration: line-through;
        text-decoration-color: #000000
    }

    .monaco-editor .line-insert, .monaco-editor .char-insert {
        background-color: rgba(155, 185, 85, 0.2);
    }

    .monaco-diff-editor .line-insert, .monaco-diff-editor .char-insert {
        background-color: rgba(155, 185, 85, 0.2);
    }

    .monaco-editor .inline-added-margin-view-zone {
        background-color: rgba(155, 185, 85, 0.2);
    }

    .monaco-editor .line-delete, .monaco-editor .char-delete {
        background-color: rgba(255, 0, 0, 0.2);
    }

    .monaco-diff-editor .line-delete, .monaco-diff-editor .char-delete {
        background-color: rgba(255, 0, 0, 0.2);
    }

    .monaco-editor .inline-deleted-margin-view-zone {
        background-color: rgba(255, 0, 0, 0.2);
    }

    .monaco-diff-editor.side-by-side .editor.modified {
        box-shadow: -6px 0 5px -5px #dddddd;
    }

    .monaco-editor .bracket-match {
        background-color: rgba(0, 100, 0, 0.1);
    }

    .monaco-editor .bracket-match {
        border: 1px solid #b9b9b9;
    }

    .monaco-editor .codelens-decoration {
        color: #999999;
    }

    .monaco-editor .codelens-decoration > a:hover {
        color: #0000ff !important;
    }

    .monaco-editor .findMatch {
        background-color: rgba(234, 92, 0, 0.33);
    }

    .monaco-editor .currentFindMatch {
        background-color: #a8ac94;
    }

    .monaco-editor .findScope {
        background-color: rgba(180, 180, 180, 0.3);
    }

    .monaco-editor .find-widget {
        background-color: #f3f3f3;
    }

    .monaco-editor .find-widget {
        box-shadow: 0 2px 8px #a8a8a8;
    }

    .monaco-editor .find-widget {
        color: #616161;
    }

    .monaco-editor .find-widget.no-results .matchesCount {
        color: #a1260d;
    }

    .monaco-editor .find-widget .monaco-sash {
        background-color: #c8c8c8;
        width: 3px !important;
        margin-left: -4px;
    }

    .monaco-editor .find-widget .monaco-checkbox .checkbox:checked + .label {
        border: 1px solid rgba(0, 122, 204, 0);
    }

    .monaco-editor .find-widget .monaco-checkbox .checkbox:checked + .label {
        background-color: rgba(0, 122, 204, 0.12);
    }

    .monaco-editor .detected-link-active {
        color: #0000ff !important;
    }

    .monaco-editor .monaco-editor-overlaymessage .anchor {
        border-top-color: #007acc;
    }

    .monaco-editor .monaco-editor-overlaymessage .message {
        border: 1px solid #007acc;
    }

    .monaco-editor .monaco-editor-overlaymessage .message {
        background-color: #d6ecf2;
    }

    .monaco-editor .parameter-hints-widget {
        border: 1px solid #c8c8c8;
    }

    .monaco-editor .parameter-hints-widget.multiple .body {
        border-left: 1px solid rgba(200, 200, 200, 0.5);
    }

    .monaco-editor .parameter-hints-widget .signature.has-docs {
        border-bottom: 1px solid rgba(200, 200, 200, 0.5);
    }

    .monaco-editor .parameter-hints-widget {
        background-color: #f3f3f3;
    }

    .monaco-editor .parameter-hints-widget a {
        color: #006ab1;
    }

    .monaco-editor .parameter-hints-widget code {
        background-color: rgba(220, 220, 220, 0.4);
    }

    .monaco-editor .snippet-placeholder {
        background-color: rgba(10, 50, 100, 0.2);
        outline-color: transparent;
    }

    .monaco-editor .finish-snippet-placeholder {
        background-color: transparent;
        outline-color: rgba(10, 50, 100, 0.5);
    }

    .monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-highlighted-label .highlight {
        color: #0066bf;
    }

    .monaco-editor .suggest-widget {
        color: #000000;
    }

    .monaco-editor .suggest-widget a {
        color: #006ab1;
    }

    .monaco-editor .suggest-widget code {
        background-color: rgba(220, 220, 220, 0.4);
    }

    .monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight {
        background-color: rgba(234, 92, 0, 0.3);
    }

    .monaco-editor .reference-zone-widget .preview .reference-decoration {
        background-color: rgba(245, 216, 2, 0.87);
    }

    .monaco-editor .reference-zone-widget .ref-tree {
        background-color: #f3f3f3;
    }

    .monaco-editor .reference-zone-widget .ref-tree {
        color: #646465;
    }

    .monaco-editor .reference-zone-widget .ref-tree .reference-file {
        color: #1e1e1e;
    }

    .monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) {
        background-color: rgba(51, 153, 255, 0.2);
    }

    .monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) {
        color: #6c6c6c !important;
    }

    .monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background, .monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input {
        background-color: #f2f8fc;
    }

    .monaco-editor .reference-zone-widget .preview .monaco-editor .margin {
        background-color: #f2f8fc;
    }

    .monaco-editor .marker-widget a {
        color: #006ab1;
    }

    .monaco-editor .hoverHighlight {
        background-color: rgba(173, 214, 255, 0.15);
    }

    .monaco-editor .monaco-editor-hover {
        background-color: #f3f3f3;
    }

    .monaco-editor .monaco-editor-hover {
        border: 1px solid #c8c8c8;
    }

    .monaco-editor .monaco-editor-hover .hover-row:not(:first-child):not(:empty) {
        border-top: 1px solid rgba(200, 200, 200, 0.5);
    }

    .monaco-editor .monaco-editor-hover hr {
        border-top: 1px solid rgba(200, 200, 200, 0.5);
    }

    .monaco-editor .monaco-editor-hover hr {
        border-bottom: 0px solid rgba(200, 200, 200, 0.5);
    }

    .monaco-editor .monaco-editor-hover a {
        color: #006ab1;
    }

    .monaco-editor .monaco-editor-hover .hover-row .actions {
        background-color: #e7e7e7;
    }

    .monaco-editor .monaco-editor-hover code {
        background-color: rgba(220, 220, 220, 0.4);
    }

    .monaco-editor .goto-definition-link {
        color: #0000ff !important;
    }

    .monaco-editor .accessibilityHelpWidget {
        background-color: #f3f3f3;
    }

    .monaco-editor .accessibilityHelpWidget {
        color: #616161;
    }

    .monaco-editor .accessibilityHelpWidget {
        box-shadow: 0 2px 8px #a8a8a8;
    }

    .monaco-editor .tokens-inspect-widget {
        border: 1px solid #c8c8c8;
    }

    .monaco-editor .tokens-inspect-widget .tokens-inspect-separator {
        background-color: #c8c8c8;
    }

    .monaco-editor .tokens-inspect-widget {
        background-color: #f3f3f3;
    }

    .mtk1 {
        color: #000000;
    }

    .mtk2 {
        color: #fffffe;
    }

    .mtk3 {
        color: #808080;
    }

    .mtk4 {
        color: #ff0000;
    }

    .mtk5 {
        color: #0451a5;
    }

    .mtk6 {
        color: #0000ff;
    }

    .mtk7 {
        color: #09885a;
    }

    .mtk8 {
        color: #008000;
    }

    .mtk9 {
        color: #dd0000;
    }

    .mtk10 {
        color: #383838;
    }

    .mtk11 {
        color: #cd3131;
    }

    .mtk12 {
        color: #863b00;
    }

    .mtk13 {
        color: #af00db;
    }

    .mtk14 {
        color: #800000;
    }

    .mtk15 {
        color: #e00000;
    }

    .mtk16 {
        color: #3030c0;
    }

    .mtk17 {
        color: #666666;
    }

    .mtk18 {
        color: #778899;
    }

    .mtk19 {
        color: #ff00ff;
    }

    .mtk20 {
        color: #a31515;
    }

    .mtk21 {
        color: #4f76ac;
    }

    .mtk22 {
        color: #008080;
    }

    .mtk23 {
        color: #001188;
    }

    .mtk24 {
        color: #4864aa;
    }

    .mtki {
        font-style: italic;
    }

    .mtkb {
        font-weight: bold;
    }

    .mtku {
        text-decoration: underline;
        text-underline-position: under;
    }</style>
    <script charset="utf-8" src="editor_files/8.js"></script>
    <script charset="utf-8" src="editor_files/20.js"></script>
    <script charset="utf-8" src="editor_files/7.js"></script>
    <script charset="utf-8" src="editor_files/13.js"></script>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2019 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    /* Container */

    .theia-notifications-overlay {
        height: 0px;
    }

    .theia-notifications-container {
        position: absolute;
        bottom: 36px;
        right: 16px;
        width: 500px;
        user-select: none;
        z-index: 1111;
    }

    .theia-notifications-container.closed {
        display: none;
    }

    .theia-notifications-container > * {
        position: relative;
    }

    /* Toasts */

    .theia-notifications-container.theia-notification-toasts .theia-notification-list-item {
        background-color: var(--theia-layout-color1);
        box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5);
        margin-top: 6px;
    }

    /* Center */

    .theia-notifications-container.theia-notification-center {
        background-color: var(--theia-layout-color1);
        box-shadow: 0px 0px 6px 0px rgba(0, 0, 0, 0.5);
    }

    /* Center > Header */

    .theia-notification-center-header {
        background-color: var(--theia-layout-color2);
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: flex-end;
        min-height: 30px;
        align-items: center;
    }

    .theia-notification-center-header-title {
        color: var(--theia-ui-font-color0);
        font-size: calc(var(--theia-ui-font-size1) / 1.1);
        font-family: var(--theia-ui-font-family);
        margin: 8px;
        /* padding: 4px; */
        flex-grow: 2;
    }

    .theia-notification-center-header-actions {
        color: white;
        margin: 8px;
        /* padding: 4px; */
    }

    /* List */

    .theia-notification-list-scroll-container {
        max-height: 300px;
        overflow: auto;
    }

    .theia-notification-list {
        display: flex;
        flex-direction: column-reverse;
        flex-wrap: nowrap;
    }


    /* List > Item */

    .theia-notification-list-item {
        width: 100%;
        cursor: pointer;
        flex-grow: 1;
        display: flex;
        flex-direction: column;
        flex-wrap: nowrap;
        justify-content: space-between;
    }

    .theia-notification-list-item:hover {
        background-color: var(--theia-layout-color2);
    }

    .theia-notification-list > .theia-notification-list-item:not(:last-child) {
        border-top: 1px var(--theia-layout-color2) solid;
    }

    .theia-notification-list-item-content {
        margin: 6px;
        flex-grow: 3;
    }

    .theia-notification-list-item-content.collapsed .theia-notification-list-item-content-bottom {
        display: none;
    }

    .theia-notification-list-item-content.collapsed .theia-notification-message {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .theia-notification-list-item-content-main {
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: space-between;
        padding: 8px 4px 0px 4px;
    }

    .theia-notification-message {
        color: var(--theia-ui-font-color0);
        font-size: var(--theia-ui-font-size1);
        font-family: var(--theia-ui-font-family);
        overflow-wrap: break-word;
        box-sizing: border-box;
        flex-basis: 0%;
        flex-grow: 1;
        flex-shrink: 1;
        display: block;
        overflow: hidden;
        user-select: text;
    }

    .theia-notification-message a {
        border: none;
        color: var(--theia-accent-color1);
        outline: 0;
        text-decoration: none;
    }

    .theia-notification-icon {
        font-family: FontAwesome;
        display: inline-block;
        padding-right: 4px;
        vertical-align: middle;
        width: 24px;
        height: 24px;
    }

    .theia-notification-icon-info:before {
        content: "\F05A";
        color: var(--theia-accent-color0);
    }

    .theia-notification-icon-warning:before {
        content: "\F071";
        color: darkorange;
    }

    .theia-notification-icon-error:before {
        content: "\F057";
        color: tomato;
    }

    .theia-notification-actions {
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: space-between;
        margin: 0px;
        padding: 0px;
    }

    .theia-notification-actions > li {
        display: inline-block;
        height: 16px;
        width: 16px;
        cursor: pointer;
        margin-left: 8px;
    }

    .theia-notification-actions > .clear-all {
        background: var(--theia-icon-close-all) no-repeat center center;
    }

    .theia-notification-actions > .clear-all:active {
        transform: scale(1.1);
    }

    .theia-notification-actions > .clear {
        background: var(--theia-icon-close) no-repeat center center;
    }

    .theia-notification-actions > .clear:active {
        transform: scale(1.2);
    }

    .theia-notification-actions > .expand {
        background: var(--theia-icon-collapse) no-repeat center center;
        transform: rotate(0deg) scale(1.5);
    }

    .theia-notification-actions > .expand:active {
        transform: rotate(0deg) scale(1.8);
    }

    .theia-notification-actions > .collapse {
        background: var(--theia-icon-collapse) no-repeat center center;
        transform: rotate(90deg) scale(1.5);
    }

    .theia-notification-actions > .collapse:active {
        transform: rotate(90deg) scale(1.8);
    }

    .theia-notification-list-item-content-bottom {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: space-between;
    }

    .theia-notification-source {
        color: var(--theia-ui-font-color3);
        font-size: var(--theia-ui-font-size0);
        font-family: var(--theia-ui-font-family);
        overflow-wrap: break-word;
        box-sizing: border-box;
        flex-grow: 1;
        padding: 4px;
        display: block;
        overflow: hidden;
    }

    .theia-notification-buttons {
        flex-grow: 2;
        display: flex;
        flex-direction: row;
        justify-content: flex-end;
        flex-wrap: wrap;
    }

    .theia-notification-buttons > button {
        margin: 4px;
        max-width: 160px;
        text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
    }

    .theia-notification-item-progress {
        display: block;
    }

    .theia-notification-item-progressbar {
        height: 2px;
        background-color: var(--theia-brand-color0);
        width: 66%;
    }

    /* Perfect scrollbar */

    .theia-notification-list-scroll-container .ps__rail-y {
        width: var(--theia-scrollbar-rail-width);
        background: var(--theia-scrollbar-rail-color);
    }

    .theia-notification-list-scroll-container .ps__rail-y:hover > .ps__thumb-y,
    .theia-notification-list-scroll-container .ps__rail-y:focus > .ps__thumb-y,
    .theia-notification-list-scroll-container .ps__rail-y.ps--clicking .ps__thumb-y {
        right: calc((var(--theia-scrollbar-rail-width) - var(--theia-scrollbar-width)) / 2);
        width: var(--theia-scrollbar-width);
    }

    .theia-notification-list-scroll-container .ps__rail-y > .ps__thumb-y {
        width: var(--theia-scrollbar-width);
        right: calc((var(--theia-scrollbar-rail-width) - var(--theia-scrollbar-width)) / 2);
        background: var(--theia-scrollbar-thumb-color);
        border-radius: 0px;
    }
    </style>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2017 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/
    </style>
    <script charset="utf-8" src="editor_files/15.js"></script>
    <style type="text/css">/********************************************************************************
 * Copyright (C) 2018 TypeFox and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/

    :root {
        --theia-private-mini-browser-height: 22px;
    }

    .theia-mini-browser {
        display: flex;
        flex-direction: column;
        height: 100%;
    }

    .theia-mini-browser-icon {
        mask: url();
        -webkit-mask: url();
    }

    .theia-mini-browser-toolbar {
        margin-top: 8px;
        display: flex;
        align-items: center;
        justify-content: space-evenly;
        padding: 0 10px;
    }

    .theia-mini-browser-toolbar-read-only {
        margin-top: 8px;
        display: flex;
        align-items: center;
        justify-content: space-evenly;
        padding: 0 10px;
    }

    .theia-mini-browser-toolbar input {
        width: 100%;
        line-height: var(--theia-private-mini-browser-height);
        margin-left: 4px;
        margin-right: 4px;
    }

    .theia-mini-browser-toolbar-read-only input {
        width: 100%;
        line-height: var(--theia-private-mini-browser-height);
        margin-left: 4px;
        margin-right: 4px;
        cursor: pointer;
        background: var(--theia-layout-color0);
        border: none;
        text-decoration: underline;
        outline: none;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        color: var(--theia-ui-button-color);
    }

    .theia-mini-browser-toolbar-read-only input:hover {
        color: var(--theia-ui-button-color-hover);
    }

    .theia-mini-browser-button {
        min-width: 1rem;
        text-align: center;
        flex-grow: 0;
        font-family: FontAwesome;
        font-size: calc(var(--theia-content-font-size) * 0.8);
        color: var(--theia-ui-font-color1);
        margin: 0px 4px 0px 4px;
    }

    .theia-mini-browser-button:not(.theia-mini-browser-button-disabled):hover {
        color: var(--theia-ui-font-color2);
    }

    .theia-mini-browser-button-disabled {
        color: var(--theia-disabled-color0);
    }

    .theia-mini-browser-previous::before {
        content: "\F053";
    }

    .theia-mini-browser-next::before {
        content: "\F054";
    }

    .theia-mini-browser-refresh::before {
        content: "\F021";
    }

    .theia-mini-browser-open::before {
        content: "\F08E";
    }

    .theia-mini-browser-content-area {
        position: relative;
        display: flex;
        height: 100%;
        width: 100%;
        flex-direction: column;
        overflow: hidden;
        margin-top: 6px;
    }

    .theia-mini-browser-pdf-container {
        width: 100%;
        height: 100%;
    }

    .theia-mini-browser-load-indicator {
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        z-index: 10;
        background: var(--theia-layout-color3);
        background-image: var(--theia-preloader);
        background-size: 60px 60px;
        background-repeat: no-repeat;
        background-position: center;
        transition: opacity 0.8s;
    }

    .theia-mini-browser-load-indicator.theia-fade-out {
        opacity: 0;
    }

    .theia-mini-browser-error-bar {
        height: 19px;
        padding-left: var(--theia-ui-padding);
        background-color: var(--theia-warn-color0);
        color: var(--theia-warn-font-color0);
        font-size: var(--theia-statusBar-font-size);
        z-index: 1000; /* Above the transparent overlay (`z-index: 999;`). */
    }

    .theia-mini-browser-error-bar span {
        margin-top: 3px;
        margin-left: var(--theia-ui-padding);
    }

    .theia-mini-browser-content-area iframe {
        flex-grow: 1;
        border: none;
        margin: 0;
        padding: 0;
    }

    .theia-mini-browser-transparent-overlay {
        background-color: transparent;
        position: absolute;
        top: 0;
        left: 0;
        height: 100%;
        width: 100%;
        z-index: 999;
    }
    </style>
    <script charset="utf-8" src="editor_files/5.js"></script>
    <script async="async" type="text/javascript" src="editor_files/monaco_003.js"></script>
    <script async="async" type="text/javascript" src="editor_files/monaco_004.js"></script>
    <script async="async" type="text/javascript" src="editor_files/monaco.js"></script>
    <style type="text/css">
        @font-face {
            font-family: "iconfont";
            src: url(); /* IE9*/
            src: url(#iefix) format('embedded-opentype'),
            url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAASYAAsAAAAABwQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFY/IUqdY21hcAAAAYAAAABLAAABcOnTvatnbHlmAAABzAAAAOAAAAEINn1DaWhlYWQAAAKsAAAALwAAADYSfadwaGhlYQAAAtwAAAAcAAAAJAfeA4NobXR4AAAC+AAAAAgAAAAICAAAAGxvY2EAAAMAAAAABgAAAAYAhAAAbWF4cAAAAwgAAAAgAAAAIAEaAFhuYW1lAAADKAAAAUUAAAJtPlT+fXBvc3QAAARwAAAAJwAAADihv0VbeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2BkYWCcwMDKwMHUyXSGgYGhH0IzvmYwYuRgYGBiYGVmwAoC0lxTGBxerH6xmrnhfwNDDHMDQwNQmBEkBwD4MQ09eJxjYGBgZWBgYAZiHSBmYWBgDGFgZAABP6AoI1icmYELLM7CoARWwwISf7H6/38YCeSzgEkGRjaGUcADJmWgPHBYQTADIwDQCwwdAHicLcwxSgNREAbgf1zcVyi+hayZ8FYUwySvEjF57sNWUsUbKDY2gqfQS1gYb6FYeoTY2HgMW8FNZkSYgWH+nw87wOqreC5mKOCwBY8eGA0ERzjBKc5wjgugxy7uZnaHMXN2MUemqK98QC7ScJzaSb8u47Cs+5M2jSkSa9EdU2bap7q0BltijZ+0TDr0mZZT0uMmdI/hJTyFj3AbyO+JZJFm23uuqu490F14DYu/sPtuRNrRyMKB9xvXxvxruguD7hWaGvRmTJarShmufjcNelAoGTQnaZWSS3MGHmsoojY5eJxjYGRgYABiUze/RfH8Nl8ZuFkYQOD6esPVCPr/TRYGZhcgl4OBCSQKABfpCg0AeJxjYGRgYG7438AQw8IAAkCSkQEVMAEARwgCawQAAAAEAAAAAAAAAACEAAAAAQAAAAIATAAOAAAAAAACAAAACgAKAAAA/wAAAAAAAHicZY9NTsMwEIVf+gekEqqoYIfkBWIBKP0Rq25YVGr3XXTfpk6bKokjx63UA3AejsAJOALcgDvwSCebNpbH37x5Y08A3OAHHo7fLfeRPVwyO3INF7gXrlN/EG6QX4SbaONVuEX9TdjHM6bCbXRheYPXuGL2hHdhDx18CNdwjU/hOvUv4Qb5W7iJO/wKt9Dx6sI+5l5XuI1HL/bHVi+cXqnlQcWhySKTOb+CmV7vkoWt0uqca1vEJlODoF9JU51pW91T7NdD5yIVWZOqCas6SYzKrdnq0AUb5/JRrxeJHoQm5Vhj/rbGAo5xBYUlDowxQhhkiMro6DtVZvSvsUPCXntWPc3ndFsU1P9zhQEC9M9cU7qy0nk6T4E9XxtSdXQrbsuelDSRXs1JErJCXta2VELqATZlV44RelzRiT8oZ0j/AAlabsgAAAB4nGNgYoAALgbsgImRiZGZgS8tOSMxrzijNCuzuDQxj4EBADstBf4A') format('woff'),
            url() format('truetype'),
            url(#iconfont) format('svg'); /* iOS 4.1- */
        }

        .iconfont {
            font-family: "iconfont" !important;
            font-size: 16px;
            font-style: normal;
            -webkit-font-smoothing: antialiased;
            -moz-osx-font-smoothing: grayscale;
        }

        .icon-fchanshujisuan:before {
            content: "\E8AB";
        }

    </style>
    <style type="text/css">.p-TabBar-toolbar .item .refresh {
        background: var(--theia-icon-refresh) no-repeat;
    }

    .p-TabBar-toolbar .item .collapse-all {
        background: var(--theia-icon-collapse-all) no-repeat;
    }

    .p-TabBar-toolbar .item .clear-all {
        background: var(--theia-icon-clear) no-repeat;
    }

    .top-toolbar.p-TabBar-toolbar {
        color: var(--theia-ui-bar-font-color1);
        position: absolute;
        right: 1em;
        padding: 0;
        height: 100%;
    }

    .top-toolbar.p-TabBar-toolbar .item > div {
        width: auto;
        height: auto;
        padding: 0 3px;
        line-height: var(--theia-private-menubar-height);
    }

    .top-toolbar.p-TabBar-toolbar .item {
        line-height: var(--theia-private-menubar-height);
        margin: 0px 8px;
        border-left: var(--theia-border-width) solid transparent;
        border-right: var(--theia-border-width) solid transparent;
    }

    .top-toolbar.p-TabBar-toolbar .item:hover {
        background: var(--theia-menu-color2);
        color: var(--theia-ui-bar-font-color0);
    }

    .execution-results {
        color: var(--theia-ui-font-color1);
    }

    .execution-results .header {
        line-height: 23px;
        padding: var(--theia-ui-padding) calc(var(--theia-ui-padding) * 2);
        background: var(--theia-layout-color1);
        border-top: 1px solid var(--theia-border-color0);
        border-bottom: 1px solid var(--theia-border-color0);
        opacity: .7;
    }

    .execution-results .header .box {
        display: flex;
        align-content: flex-end;
        float: right;
    }


    .execution-results .header .box .item {
        margin-left: calc(var(--theia-ui-padding) * 2);
        border: 1px solid var(--theia-border-color2);
        padding: 0 5px;
        border-radius: 5px;
    }

    .execution-results .success {
        color: var(--theia-success-color0);
    }

    .execution-results .error {
        color: var(--theia-error-color0);
    }

    .execution-results .hidden {
        display: none !important;
    }

    .execution-results .fa-spinner {
        color: var(--theia-ui-font-color1);
    }

    .execution-results .results-container {
        position: relative;
        height: calc(100% - 37px);
        overflow: auto;
    }

    .execution-results .results {
        padding: 0 calc(var(--theia-ui-padding) * 2);
    }

    .spinnerContainer {
        position: absolute;
        top: 0;
        width: 100%;
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
        background-color: rgba(0, 0, 0, 0.2);
    }

    .execution-results .monaco-editor {
        margin-top: 4px;
    }

    .theia-icon {
        font-family: "iconfont" !important;
        font-size: 18px;
        font-style: normal;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        color: var(--theia-ui-bar-font-color0);
        line-height: unset;
        font-weight: lighter;
        text-align: center;
    }

    .theia-icon::before {
        content: "\E8AB";
    }
    </style>
</head>

<body>
<script type="text/javascript">
    (function (d) {
        var t = d.createElement("script");
        t.type = "text/javascript";
        t.async = true;
        t.id = "tb-beacon-aplus";
        t.setAttribute("exparams", "category=&userid=&aplus&yunid=178%2a%2a%2a%2a0784&yunpk=1843748816173720");
        t.src = "//g.alicdn.com/alilog/mlog/aplus_int.js";
        d.getElementsByTagName("head")[0].appendChild(t);
    })(document);
</script>
<div class="theia-preload" data-spm-anchor-id="0.0.0.i0.65c4XcE9XcE9aI">
    <div class="loading-container">
        <svg t="1553606443460" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
             p-id="4370" xlink="http://www.w3.org/1999/xlink" width="150" height="150">
            <path class="path" stroke="var(--theia-ui-font-color2)" stroke-width="10" stroke-miterlimit="10"
                  d="M959.2 383.9c-0.3-82.1-66.9-148.6-149.1-148.6H575.9l21.6 85.2 201 43.7c18.3 4.2 32.1 20.3 32.9 39.7 0.1 0.5 0.1 216.1 0 216.6-0.8 19.4-14.6 35.5-32.9 39.7l-201 43.7-21.6 85.3h234.2c82.1 0 148.8-66.5 149.1-148.6V383.9zM225.5 660.4c-18.3-4.2-32.1-20.3-32.9-39.7-0.1-0.6-0.1-216.1 0-216.6 0.8-19.4 14.6-35.5 32.9-39.7l201-43.7 21.6-85.2H213.8c-82.1 0-148.8 66.4-149.1 148.6V641c0.3 82.1 67 148.6 149.1 148.6H448l-21.6-85.3-200.9-43.9z m200.9-158.8h171v21.3h-171z"
                  fill="transparent" p-id="4371" data-spm-anchor-id="a313x.7781069.0.i0"></path>
        </svg>
        <div id="fc-embeded-loading-message">
            Loading editor, takes 6~10 seconds for the first time...
        </div>
    </div>
</div>
<script type="text/javascript" src="editor_files/bundle.js"></script>

<script type="text/javascript" src="editor_files/loader.js" charset="utf-8"></script>
<script type="text/javascript" src="editor_files/loader.js" charset="utf-8"></script>
</body>
</html>